@economic/taco 2.45.0-alpha.3 → 2.45.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/dist/charts/components/Area/AreaChart.d.ts +19 -0
  2. package/dist/charts/components/Bar/BarChart.d.ts +20 -0
  3. package/dist/charts/components/Donut/ActiveShape.d.ts +8 -0
  4. package/dist/charts/components/Donut/CenteredLabel.d.ts +11 -0
  5. package/dist/charts/components/Donut/DonutChart.d.ts +21 -0
  6. package/dist/charts/components/Donut/Legend.d.ts +13 -0
  7. package/dist/charts/components/Donut/util.d.ts +2 -0
  8. package/dist/charts/components/Legend.d.ts +16 -0
  9. package/dist/charts/components/Line/LineChart.d.ts +18 -0
  10. package/dist/charts/components/ResponsiveContainer.d.ts +5 -0
  11. package/dist/charts/components/Tooltip.d.ts +10 -0
  12. package/dist/charts/components/types.d.ts +5 -0
  13. package/dist/charts/utils/color.d.ts +3 -0
  14. package/dist/charts/utils/common.d.ts +37 -0
  15. package/dist/components/Alert/Alert.d.ts +1 -1
  16. package/dist/components/Hanger/Hanger.d.ts +1 -0
  17. package/dist/components/Icon/components/Autopay.d.ts +3 -0
  18. package/dist/components/Icon/components/AutopayPaused.d.ts +3 -0
  19. package/dist/components/Icon/components/Experiment.d.ts +3 -0
  20. package/dist/components/Icon/components/Person.d.ts +3 -0
  21. package/dist/components/Icon/components/PersonSolid.d.ts +3 -0
  22. package/dist/components/Icon/components/Wallet.d.ts +3 -0
  23. package/dist/components/Icon/components/index.d.ts +1 -1
  24. package/dist/components/Input/Input.d.ts +1 -1
  25. package/dist/components/Input/util.d.ts +5 -9
  26. package/dist/components/Listbox/util.d.ts +1 -1
  27. package/dist/components/Menu/components/Item.d.ts +1 -1
  28. package/dist/components/Menu/components/Link.d.ts +1 -1
  29. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  30. package/dist/components/RadioGroup/RadioGroup.d.ts +3 -3
  31. package/dist/components/Report/Report.d.ts +4 -2
  32. package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
  33. package/dist/components/Select2/components/Option.d.ts +4 -4
  34. package/dist/components/Select2/components/Search.d.ts +1 -1
  35. package/dist/components/Table3/Table3.d.ts +3 -4
  36. package/dist/components/Table3/components/Row/Editing/CreateNewRow.d.ts +1 -3
  37. package/dist/components/Table3/components/Row/Editing/TemporaryRow.d.ts +1 -0
  38. package/dist/components/Table3/features/useEditingState.d.ts +13 -13
  39. package/dist/components/Table3/features/useTableEditing.d.ts +15 -14
  40. package/dist/components/Table3/types.d.ts +2 -0
  41. package/dist/components/Table3/util/editing.d.ts +3 -0
  42. package/dist/components/Tag/Tag.d.ts +1 -1
  43. package/dist/components/Tour/Tour.d.ts +2 -2
  44. package/dist/esm/index.css +148 -16
  45. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js +67 -0
  46. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js.map +1 -0
  47. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js +120 -0
  48. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js.map +1 -0
  49. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js +47 -0
  50. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js.map +1 -0
  51. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js +27 -0
  52. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js.map +1 -0
  53. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js +170 -0
  54. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js.map +1 -0
  55. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +165 -0
  56. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -0
  57. package/dist/esm/packages/taco/src/charts/components/Donut/util.js +5 -0
  58. package/dist/esm/packages/taco/src/charts/components/Donut/util.js.map +1 -0
  59. package/dist/esm/packages/taco/src/charts/components/Legend.js +146 -0
  60. package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -0
  61. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js +65 -0
  62. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js.map +1 -0
  63. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js +10 -0
  64. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js.map +1 -0
  65. package/dist/esm/packages/taco/src/charts/components/Tooltip.js +44 -0
  66. package/dist/esm/packages/taco/src/charts/components/Tooltip.js.map +1 -0
  67. package/dist/esm/packages/taco/src/charts/utils/color.js +24 -0
  68. package/dist/esm/packages/taco/src/charts/utils/color.js.map +1 -0
  69. package/dist/esm/packages/taco/src/charts/utils/common.js +34 -0
  70. package/dist/esm/packages/taco/src/charts/utils/common.js.map +1 -0
  71. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js +6 -14
  72. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  73. package/dist/esm/packages/taco/src/components/Alert/Alert.js +2 -0
  74. package/dist/esm/packages/taco/src/components/Alert/Alert.js.map +1 -1
  75. package/dist/esm/packages/taco/src/components/Badge/Badge.js +9 -6
  76. package/dist/esm/packages/taco/src/components/Badge/Badge.js.map +1 -1
  77. package/dist/esm/packages/taco/src/components/Banner/util.js +5 -0
  78. package/dist/esm/packages/taco/src/components/Banner/util.js.map +1 -1
  79. package/dist/esm/packages/taco/src/components/Button/Button.js +2 -1
  80. package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
  81. package/dist/esm/packages/taco/src/components/Card/Card.js +2 -2
  82. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  83. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +3 -2
  84. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  85. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +9 -6
  86. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  87. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +13 -0
  88. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  89. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +9 -1
  90. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  91. package/dist/esm/packages/taco/src/components/Dialog/Dialog.js.map +1 -1
  92. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +7 -5
  93. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  94. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js +4 -2
  95. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js.map +1 -1
  96. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Avatar.js.map +1 -1
  97. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +2 -4
  98. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
  99. package/dist/esm/packages/taco/src/components/Icon/components/Autopay.js +19 -0
  100. package/dist/esm/packages/taco/src/components/Icon/components/Autopay.js.map +1 -0
  101. package/dist/esm/packages/taco/src/components/Icon/components/AutopayPaused.js +19 -0
  102. package/dist/esm/packages/taco/src/components/Icon/components/AutopayPaused.js.map +1 -0
  103. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js +20 -0
  104. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js.map +1 -0
  105. package/dist/esm/packages/taco/src/components/Icon/components/Person.js +19 -0
  106. package/dist/esm/packages/taco/src/components/Icon/components/Person.js.map +1 -0
  107. package/dist/esm/packages/taco/src/components/Icon/components/PersonSolid.js +19 -0
  108. package/dist/esm/packages/taco/src/components/Icon/components/PersonSolid.js.map +1 -0
  109. package/dist/esm/packages/taco/src/components/Icon/components/Wallet.js +19 -0
  110. package/dist/esm/packages/taco/src/components/Icon/components/Wallet.js.map +1 -0
  111. package/dist/esm/packages/taco/src/components/Icon/components/index.js +12 -0
  112. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  113. package/dist/esm/packages/taco/src/components/Input/util.js +1 -1
  114. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  115. package/dist/esm/packages/taco/src/components/Listbox/util.js +1 -7
  116. package/dist/esm/packages/taco/src/components/Listbox/util.js.map +1 -1
  117. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +5 -0
  118. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  119. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  120. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js.map +1 -1
  121. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Report/Report.js +2 -3
  123. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  124. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  125. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
  126. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  127. package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
  128. package/dist/esm/packages/taco/src/components/Select/useSelect.js.map +1 -1
  129. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +10 -11
  130. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  131. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  132. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +7 -5
  133. package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
  134. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +56 -19
  135. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  136. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +1 -1
  137. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  138. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
  139. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  140. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  141. package/dist/esm/packages/taco/src/components/Table3/Table3.js +23 -12
  142. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  143. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  144. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +61 -36
  145. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  146. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  147. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +18 -10
  148. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  149. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js +0 -1
  150. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js.map +1 -1
  151. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +6 -38
  152. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  153. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +7 -6
  154. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  155. package/dist/esm/packages/taco/src/components/Table3/components/Toolbar/Editing/Editing.js +4 -0
  156. package/dist/esm/packages/taco/src/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
  157. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +80 -80
  158. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  159. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +69 -14
  160. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  161. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +16 -22
  162. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  163. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +8 -6
  164. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  165. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +11 -4
  166. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  167. package/dist/esm/packages/taco/src/components/Tag/Tag.js +6 -4
  168. package/dist/esm/packages/taco/src/components/Tag/Tag.js.map +1 -1
  169. package/dist/esm/packages/taco/src/components/Toast/Toaster.js +16 -2
  170. package/dist/esm/packages/taco/src/components/Toast/Toaster.js.map +1 -1
  171. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +2 -2
  172. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  173. package/dist/esm/packages/taco/src/components/Tour/Tour.js +2 -2
  174. package/dist/esm/packages/taco/src/components/Tour/Tour.js.map +1 -1
  175. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  176. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js.map +1 -1
  177. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +1 -1
  178. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -1
  179. package/dist/esm/packages/taco/src/index.js +6 -1
  180. package/dist/esm/packages/taco/src/index.js.map +1 -1
  181. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js +1 -1
  182. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js.map +1 -1
  183. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js +5 -3
  184. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js.map +1 -1
  185. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +1 -1
  186. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -1
  187. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  188. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +8 -10
  189. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  190. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js +2 -0
  191. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js.map +1 -1
  192. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +15 -2
  193. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  194. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +4 -3
  195. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  196. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js +7 -0
  197. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
  198. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js +11 -0
  199. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  200. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +10 -7
  201. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  202. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js +23 -6
  203. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
  204. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -6
  205. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  206. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js +20 -6
  207. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js.map +1 -1
  208. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Goto.js.map +1 -1
  209. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  210. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/SortIndicator.js.map +1 -1
  211. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/util.js.map +1 -1
  212. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +7 -15
  213. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  214. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
  215. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  216. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +44 -5
  217. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  218. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js +3 -2
  219. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js.map +1 -1
  220. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js +6 -0
  221. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js.map +1 -0
  222. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +5 -3
  223. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  224. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js +0 -2
  225. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  226. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +2 -1
  227. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  228. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +4 -0
  229. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
  230. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +4 -4
  231. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  232. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
  233. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  234. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -4
  235. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  236. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
  237. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  238. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +54 -56
  239. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  240. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +2 -2
  241. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  242. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
  243. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  244. package/dist/esm/packages/taco/src/primitives/Table/types.js +3 -7
  245. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  246. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +13 -12
  247. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  248. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +224 -0
  249. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -0
  250. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js +11 -0
  251. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js.map +1 -1
  252. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
  253. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  254. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js +2 -1
  255. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js.map +1 -1
  256. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
  257. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  258. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +18 -8
  259. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  260. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js +3 -4
  261. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  262. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
  263. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  264. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +2 -1
  265. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  266. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
  267. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  268. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
  269. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  270. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
  271. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  272. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -1
  273. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +6 -5
  274. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  275. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
  276. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  277. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +6 -2
  278. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  279. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js +6 -0
  280. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  281. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +7 -1
  282. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  283. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +7 -1
  284. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  285. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/settings.js.map +1 -1
  286. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +20 -5
  287. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  288. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -1
  289. package/dist/esm/packages/taco/src/types.js.map +1 -1
  290. package/dist/esm/packages/taco/src/utils/dom.js +12 -1
  291. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  292. package/dist/esm/packages/taco/src/utils/tailwind.js +2 -0
  293. package/dist/esm/packages/taco/src/utils/tailwind.js.map +1 -1
  294. package/dist/esm/packages/taco/tailwind.colors.js +122 -0
  295. package/dist/esm/packages/taco/tailwind.colors.js.map +1 -0
  296. package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
  297. package/dist/index.css +148 -16
  298. package/dist/index.d.ts +6 -0
  299. package/dist/primitives/Sortable/components/Container.d.ts +1 -1
  300. package/dist/primitives/Table/Core/Table.d.ts +1 -0
  301. package/dist/primitives/Table/Core/components/Body/EmptyStateBody.d.ts +1 -0
  302. package/dist/primitives/Table/Core/components/Body/util.d.ts +4 -4
  303. package/dist/primitives/Table/Core/components/Footer/Footer.d.ts +2 -2
  304. package/dist/primitives/Table/Core/components/Header/components/SortIndicator.d.ts +2 -2
  305. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  306. package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
  307. package/dist/primitives/Table/Core/components/Row/RowContext.d.ts +2 -1
  308. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.d.ts +3 -0
  309. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.d.ts +0 -1
  310. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.d.ts +0 -3
  311. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  312. package/dist/primitives/Table/Core/types.d.ts +2 -1
  313. package/dist/primitives/Table/types.d.ts +24 -16
  314. package/dist/primitives/Table/useTableDataLoader.d.ts +2 -2
  315. package/dist/primitives/Table/useTableDataLoader2.d.ts +23 -0
  316. package/dist/primitives/Table/useTableManager/features/useTableRowActions.d.ts +2 -0
  317. package/dist/primitives/Table/useTableManager/features/useTableRowExpansion.d.ts +2 -1
  318. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
  319. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +6 -3
  320. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.d.ts +1 -1
  321. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
  322. package/dist/primitives/Table/useTableManager/useTableManager.d.ts +2 -1
  323. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
  324. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +1 -1
  325. package/dist/primitives/Table/useTableManager/util/settings.d.ts +1 -1
  326. package/dist/taco.cjs.development.js +2055 -585
  327. package/dist/taco.cjs.development.js.map +1 -1
  328. package/dist/taco.cjs.production.min.js +1 -1
  329. package/dist/taco.cjs.production.min.js.map +1 -1
  330. package/dist/types.d.ts +1 -1
  331. package/dist/utils/dom.d.ts +2 -2
  332. package/package.json +9 -8
  333. package/tailwind.colors.js +121 -0
  334. package/tailwind.config.js +3 -2
  335. package/dist/components/Table3/components/Row/Editing/CreateRowButton.d.ts +0 -11
@@ -1 +1 @@
1
- {"version":3,"file":"Print.js","sources":["../../../../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../../../../components/IconButton/IconButton';\nimport { useLocalization } from '../../../../../../../components/Provider/Localization';\nimport { useToast } from '../../../../../../../components/Toast/Toaster';\nimport { TableRef } from '../../../../../types';\nimport { PrintDialog } from './PrintDialog';\nimport { Shortcut } from '../../../../../../../components/Shortcut/Shortcut';\n\nexport type PrintProps<TType = unknown> = {\n table: ReactTable<TType>;\n tableId: string;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Print<TType = unknown>(props: PrintProps<TType>) {\n const { table, tableId, tableRef } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const lastScrollTopRef = React.useRef<number>();\n const toast = useToast();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const { allRows, orientation, size, splitGroups } = tableMeta.printing.settings;\n\n const togglePrinting = React.useCallback(\n (enabled: boolean) => {\n tableMeta.printing.setIsPrinting(enabled);\n\n if (tableRef.current) {\n if (enabled) {\n lastScrollTopRef.current = tableRef.current.scrollTop;\n } else if (lastScrollTopRef.current !== undefined) {\n tableRef.current.scrollTop = lastScrollTopRef.current;\n lastScrollTopRef.current = undefined;\n }\n }\n },\n [tableRef.current]\n );\n\n React.useEffect(() => {\n const afterPrint = () => {\n togglePrinting(false);\n };\n\n window.addEventListener('afterprint', afterPrint);\n\n return () => {\n window.removeEventListener('afterprint', afterPrint);\n };\n }, []);\n\n const print = async () => {\n const toastRef = toast.loading(texts.table.print.loading);\n\n if (tableMeta.server.isEnabled && tableMeta.server.loadAllIfNeeded) {\n try {\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n }\n\n // this might close immediately if the dataset is small - this is okay\n toastRef.close();\n\n // use a timeout to let the toast close, otherwise it freezes mid animation when the print dialog opens\n setTimeout(() => {\n // do this here because Safari doesn't support the beforeprint event\n togglePrinting(true);\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n if (isSafari) {\n try {\n // Try using document.execCommand for printing in Safari\n document.execCommand('print', false, undefined);\n } catch (error) {\n // If document.execCommand fails or throws an error, fallback to window.print()\n window.print();\n }\n } else {\n // Execute window.print() for all other browsers\n window.print();\n }\n });\n });\n }, 150);\n };\n\n const printStyle = [`@page { size: ${size} ${orientation}; }`];\n\n if (!allRows) {\n printStyle.push(`table[data-taco^='table']#${tableId} tr:not([data-row-selected=\"true\"]) { display: none; }`);\n }\n\n if (splitGroups) {\n printStyle.push(`table[data-taco^='table']#${tableId} tr[data-row-group]:not(:first-child) { break-before: page; }`);\n }\n\n const shortcut = { key: 'p', meta: true, shift: false };\n const tooltip = (\n <>\n {texts.table.print.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n );\n\n return (\n <>\n <style media=\"print\">{printStyle.join('\\n')}</style>\n <IconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n dialog={dialogProps => (\n <PrintDialog\n {...dialogProps}\n table={table}\n onAccept={print}\n orientation={orientation}\n setOrientation={value => tableMeta.printing.setSetting('orientation', value)}\n size={size}\n setSize={value => tableMeta.printing.setSetting('size', value)}\n allRows={allRows}\n setAllRows={value => tableMeta.printing.setSetting('allRows', value)}\n splitGroups={splitGroups}\n setSplitGroups={value => tableMeta.printing.setSetting('splitGroups', value)}\n />\n )}\n ref={ref}\n shortcut={shortcut}\n tooltip={tooltip}\n />\n </>\n );\n}\n"],"names":["Print","props","table","tableId","tableRef","texts","useLocalization","ref","React","useRef","lastScrollTopRef","toast","useToast","tableMeta","options","meta","allRows","orientation","size","splitGroups","printing","settings","togglePrinting","useCallback","enabled","setIsPrinting","current","scrollTop","undefined","useEffect","afterPrint","window","addEventListener","removeEventListener","print","toastRef","close","setTimeout","requestAnimationFrame","isSafari","test","navigator","userAgent","document","execCommand","error","loading","_temp2","server","isEnabled","loadAllIfNeeded","_temp","_catch","Promise","resolve","getState","sorting","columnFilters","then","errorMessage","console","_temp3","e","reject","printStyle","push","shortcut","key","shift","tooltip","Shortcut","className","keys","media","join","IconButton","icon","dialog","dialogProps","PrintDialog","onAccept","setOrientation","value","setSetting","setSize","setAllRows","setSplitGroups"],"mappings":"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"}
1
+ {"version":3,"file":"Print.js","sources":["../../../../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { IconButton } from '../../../../../../../components/IconButton/IconButton';\nimport { useLocalization } from '../../../../../../../components/Provider/Localization';\nimport { useToast } from '../../../../../../../components/Toast/Toaster';\nimport { TableRef } from '../../../../../types';\nimport { PrintDialog } from './PrintDialog';\nimport { Shortcut } from '../../../../../../../components/Shortcut/Shortcut';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\n\nexport type PrintProps<TType = unknown> = {\n table: ReactTable<TType>;\n tableId: string;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Print<TType = unknown>(props: PrintProps<TType>) {\n const { table, tableId, tableRef } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLButtonElement>(null);\n const lastScrollTopRef = React.useRef<number>();\n const toast = useToast();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const { allRows, orientation, size, splitGroups } = tableMeta.printing.settings;\n\n const togglePrinting = React.useCallback(\n (enabled: boolean) => {\n tableMeta.printing.setIsPrinting(enabled);\n\n if (tableRef.current) {\n if (enabled) {\n lastScrollTopRef.current = tableRef.current.scrollTop;\n } else if (lastScrollTopRef.current !== undefined) {\n tableRef.current.scrollTop = lastScrollTopRef.current;\n lastScrollTopRef.current = undefined;\n }\n }\n },\n [tableRef.current]\n );\n\n React.useEffect(() => {\n const afterPrint = () => {\n togglePrinting(false);\n };\n\n window.addEventListener('afterprint', afterPrint);\n\n return () => {\n window.removeEventListener('afterprint', afterPrint);\n };\n }, []);\n\n const print = async () => {\n const toastRef = toast.loading(texts.table.print.loading);\n\n if (tableMeta.server.isEnabled && tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n try {\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n }\n\n // this might close immediately if the dataset is small - this is okay\n toastRef.close();\n\n // use a timeout to let the toast close, otherwise it freezes mid animation when the print dialog opens\n setTimeout(() => {\n // do this here because Safari doesn't support the beforeprint event\n togglePrinting(true);\n\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n if (isSafari) {\n try {\n // Try using document.execCommand for printing in Safari\n document.execCommand('print', false, undefined);\n } catch (error) {\n // If document.execCommand fails or throws an error, fallback to window.print()\n window.print();\n }\n } else {\n // Execute window.print() for all other browsers\n window.print();\n }\n });\n });\n }, 150);\n };\n\n const printStyle = [`@page { size: ${size} ${orientation}; }`];\n\n if (!allRows) {\n printStyle.push(`table[data-taco^='table']#${tableId} tr:not([data-row-selected=\"true\"]) { display: none; }`);\n }\n\n if (splitGroups) {\n printStyle.push(`table[data-taco^='table']#${tableId} tr[data-row-group]:not(:first-child) { break-before: page; }`);\n }\n\n const shortcut = { key: 'p', meta: true, shift: false };\n const tooltip = (\n <>\n {texts.table.print.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n );\n\n return (\n <>\n <style media=\"print\">{printStyle.join('\\n')}</style>\n <IconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n dialog={dialogProps => (\n <PrintDialog\n {...dialogProps}\n table={table}\n onAccept={print}\n orientation={orientation}\n setOrientation={value => tableMeta.printing.setSetting('orientation', value)}\n size={size}\n setSize={value => tableMeta.printing.setSetting('size', value)}\n allRows={allRows}\n setAllRows={value => tableMeta.printing.setSetting('allRows', value)}\n splitGroups={splitGroups}\n setSplitGroups={value => tableMeta.printing.setSetting('splitGroups', value)}\n />\n )}\n ref={ref}\n shortcut={shortcut}\n tooltip={tooltip}\n />\n </>\n );\n}\n"],"names":["Print","props","table","tableId","tableRef","texts","useLocalization","ref","React","useRef","lastScrollTopRef","toast","useToast","tableMeta","options","meta","allRows","orientation","size","splitGroups","printing","settings","togglePrinting","useCallback","enabled","setIsPrinting","current","scrollTop","undefined","useEffect","afterPrint","window","addEventListener","removeEventListener","print","toastRef","close","setTimeout","requestAnimationFrame","isSafari","test","navigator","userAgent","document","execCommand","error","loading","_temp2","server","isEnabled","loadAllIfNeeded","hiddenColumns","getHiddenColumns","getState","columnVisibility","_temp","_catch","Promise","resolve","sorting","columnFilters","search","enableGlobalFilter","globalFilter","then","errorMessage","console","_temp3","e","reject","printStyle","push","shortcut","key","shift","tooltip","Shortcut","className","keys","media","join","IconButton","icon","dialog","dialogProps","PrintDialog","onAccept","setOrientation","value","setSetting","setSize","setAllRows","setSplitGroups"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import React__default from 'react';
2
2
  import { useLocalization } from '../../../../../../../components/Provider/Localization.js';
3
3
  import { Switch } from '../../../../../../../components/Switch/Switch.js';
4
- import { TableServerLoadAllState } from '../../../../../types.js';
4
+ import { getHiddenColumns } from '../../../../../useTableManager/util/columns.js';
5
5
  import { SearchInput2 } from '../../../../../../../components/SearchInput2/SearchInput2.js';
6
6
 
7
7
  function Search(props) {
@@ -20,6 +20,7 @@ function Search(props) {
20
20
  const scrollTo = rowIndex => scrollToIndex(rowIndex, {
21
21
  align: 'center'
22
22
  });
23
+ const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
23
24
  React__default.useEffect(() => {
24
25
  if (tableMeta.search.highlightedColumnIndexes.length) {
25
26
  scrollTo(tableMeta.search.highlightedColumnIndexes[0][0]);
@@ -28,9 +29,11 @@ function Search(props) {
28
29
  const handleFocus = function () {
29
30
  try {
30
31
  const _temp = function () {
31
- if (tableMeta.server.loadAllIfNeeded) {
32
+ if (tableMeta.server.loadAllIfNeeded && !tableMeta.server._experimentalDataLoader2) {
32
33
  // don't pass the search query because we need all data - not filtered data
33
- return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
34
+ return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, hiddenColumns,
35
+ // the old data loader doesn't have server side search
36
+ undefined)).then(function () {});
34
37
  }
35
38
  }();
36
39
  // load all data if that is possible
@@ -39,8 +42,20 @@ function Search(props) {
39
42
  return Promise.reject(e);
40
43
  }
41
44
  };
45
+ const [loading, setLoading] = React__default.useState(false);
46
+ const searchTimeoutRef = React__default.useRef();
42
47
  const handleChange = query => {
43
48
  table.setGlobalFilter(String(query !== null && query !== void 0 ? query : ''));
49
+ if (tableMeta.search.enableGlobalFilter && tableMeta.search.handleSearch) {
50
+ clearTimeout(searchTimeoutRef.current);
51
+ searchTimeoutRef.current = setTimeout(() => {
52
+ var _tableMeta$search$han, _tableMeta$search;
53
+ setLoading(true);
54
+ (_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(() => {
55
+ setLoading(false);
56
+ });
57
+ }, 150);
58
+ }
44
59
  };
45
60
  const handleToggleExcludeUnmatchedResults = enabled => {
46
61
  tableMeta.search.setEnableGlobalFilter(enabled, table);
@@ -48,6 +63,12 @@ function Search(props) {
48
63
  var _ref$current;
49
64
  return (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
50
65
  });
66
+ if (tableMeta.search.handleSearch) {
67
+ setLoading(true);
68
+ tableMeta.search.handleSearch(enabled ? query : undefined, hiddenColumns).then(() => {
69
+ setLoading(false);
70
+ });
71
+ }
51
72
  };
52
73
  const handleNextResult = () => {
53
74
  if (!tableMeta.search.highlightedColumnIndexes.length) {
@@ -91,7 +112,7 @@ function Search(props) {
91
112
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SearchInput2, {
92
113
  findCurrent: tableMeta.search.currentHighlightColumnIndex !== undefined ? tableMeta.search.currentHighlightColumnIndex + 1 : null,
93
114
  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,
94
- loading: tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading,
115
+ loading: tableMeta.server._experimentalDataLoader2 ? loading : tableMeta.server.loading,
95
116
  name: "table-search",
96
117
  onClickFindPrevious: handlePreviousResult,
97
118
  onClickFindNext: handleNextResult,
@@ -106,6 +127,7 @@ function Search(props) {
106
127
  meta: true,
107
128
  shift: false
108
129
  },
130
+ showTotal: !tableMeta.server._experimentalDataLoader2,
109
131
  value: query
110
132
  }));
111
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Search.js","sources":["../../../../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Search/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../../components/Provider/Localization';\nimport { SearchInput2 } from '../../../../../../../components/SearchInput2/SearchInput2';\nimport { Switch } from '../../../../../../../components/Switch/Switch';\nimport { TableRef, TableServerLoadAllState } from '../../../../../types';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table, tableRef } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const query = table.getState().globalFilter;\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n\n React.useEffect(() => {\n if (tableMeta.search.highlightedColumnIndexes.length) {\n scrollTo(tableMeta.search.highlightedColumnIndexes[0][0]);\n }\n }, [tableMeta.search.highlightedColumnIndexes.length]);\n\n const handleFocus = async () => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n };\n\n const handleChange = (query: any) => {\n table.setGlobalFilter(String(query ?? ''));\n };\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.setEnableGlobalFilter(enabled, table);\n requestAnimationFrame(() => ref.current?.focus());\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table.search.excludeUnmatchedResults}\n checked={!!table.options.enableGlobalFilter}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape' && tableMeta.search.currentHighlightColumnIndex !== undefined) {\n const [rowIndex, cellIndex] = tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex];\n\n if (rowIndex !== undefined && cellIndex !== undefined) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n `tbody > tr[data-row-index=\"${rowIndex}\"] > td[data-cell-index=\"${cellIndex}\"]`\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n }\n };\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes?.length ?? null}\n loading={tableMeta.server.loadAllStatus === TableServerLoadAllState.Loading}\n name=\"table-search\"\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={texts.table.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n value={query}\n />\n </>\n );\n}\n"],"names":["Search","props","scrollToIndex","table","tableRef","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","getState","globalFilter","scrollTo","rowIndex","align","useEffect","search","highlightedColumnIndexes","length","handleFocus","server","loadAllIfNeeded","Promise","resolve","sorting","columnFilters","then","_temp","e","reject","handleChange","setGlobalFilter","String","handleToggleExcludeUnmatchedResults","enabled","setEnableGlobalFilter","requestAnimationFrame","_ref$current","current","focus","handleNextResult","nextIndex","currentHighlightColumnIndex","undefined","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","excludeUnmatchedResults","checked","enableGlobalFilter","onChange","handleKeyDown","event","key","cellIndex","rowActive","setRowActiveIndex","cell","_tableRef$current","querySelector","_cell$focus","call","SearchInput2","findCurrent","findTotal","_tableMeta$search$hig","_tableMeta$search$hig2","loading","loadAllStatus","TableServerLoadAllState","Loading","name","onClickFindPrevious","onClickFindNext","onFocus","onKeyDown","placeholder","settingsContent","shortcut","shift","value"],"mappings":"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"}
1
+ {"version":3,"file":"Search.js","sources":["../../../../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Search/Search.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../../components/Provider/Localization';\nimport { SearchInput2 } from '../../../../../../../components/SearchInput2/SearchInput2';\nimport { Switch } from '../../../../../../../components/Switch/Switch';\nimport { TableRef } from '../../../../../types';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\n\ntype SearchProps<TType = unknown> = {\n scrollToIndex: any;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Search<TType = unknown>(props: SearchProps<TType>) {\n const { scrollToIndex, table, tableRef } = props;\n const { texts } = useLocalization();\n const ref = React.useRef<HTMLInputElement>(null);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const query = table.getState().globalFilter;\n const scrollTo = (rowIndex: number) => scrollToIndex(rowIndex, { align: 'center' });\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n React.useEffect(() => {\n if (tableMeta.search.highlightedColumnIndexes.length) {\n scrollTo(tableMeta.search.highlightedColumnIndexes[0][0]);\n }\n }, [tableMeta.search.highlightedColumnIndexes.length]);\n\n const handleFocus = async () => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded && !tableMeta.server._experimentalDataLoader2) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n // the old data loader doesn't have server side search\n undefined\n );\n }\n };\n\n const [loading, setLoading] = React.useState(false);\n\n const searchTimeoutRef = React.useRef<NodeJS.Timeout>();\n\n const handleChange = (query: any) => {\n table.setGlobalFilter(String(query ?? ''));\n\n if (tableMeta.search.enableGlobalFilter && tableMeta.search.handleSearch) {\n clearTimeout(searchTimeoutRef.current);\n searchTimeoutRef.current = setTimeout(() => {\n setLoading(true);\n tableMeta.search.handleSearch?.(query, hiddenColumns).then(() => {\n setLoading(false);\n });\n }, 150);\n }\n };\n\n const handleToggleExcludeUnmatchedResults = (enabled: boolean) => {\n tableMeta.search.setEnableGlobalFilter(enabled, table);\n requestAnimationFrame(() => ref.current?.focus());\n\n if (tableMeta.search.handleSearch) {\n setLoading(true);\n tableMeta.search.handleSearch(enabled ? query : undefined, hiddenColumns).then(() => {\n setLoading(false);\n });\n }\n };\n\n const handleNextResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined ||\n tableMeta.search.currentHighlightColumnIndex === tableMeta.search.highlightedColumnIndexes.length - 1\n ? 0\n : tableMeta.search.currentHighlightColumnIndex + 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const handlePreviousResult = () => {\n if (!tableMeta.search.highlightedColumnIndexes.length) {\n return;\n }\n\n const nextIndex =\n tableMeta.search.currentHighlightColumnIndex === undefined\n ? 0\n : tableMeta.search.currentHighlightColumnIndex === 0\n ? tableMeta.search.highlightedColumnIndexes.length - 1\n : tableMeta.search.currentHighlightColumnIndex - 1;\n\n tableMeta.search.setCurrentHighlightColumnIndex(nextIndex);\n // we scroll to the row here, the cell scrolls itself into view\n scrollTo(tableMeta.search.highlightedColumnIndexes[nextIndex][0]);\n };\n\n const settings = (\n <Switch\n label={texts.table.search.excludeUnmatchedResults}\n checked={!!table.options.enableGlobalFilter}\n onChange={handleToggleExcludeUnmatchedResults}\n />\n );\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape' && tableMeta.search.currentHighlightColumnIndex !== undefined) {\n const [rowIndex, cellIndex] = tableMeta.search.highlightedColumnIndexes[tableMeta.search.currentHighlightColumnIndex];\n\n if (rowIndex !== undefined && cellIndex !== undefined) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n `tbody > tr[data-row-index=\"${rowIndex}\"] > td[data-cell-index=\"${cellIndex}\"]`\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n }\n };\n\n return (\n <>\n <SearchInput2\n findCurrent={\n tableMeta.search.currentHighlightColumnIndex !== undefined\n ? tableMeta.search.currentHighlightColumnIndex + 1\n : null\n }\n findTotal={tableMeta.search.highlightedColumnIndexes?.length ?? null}\n loading={tableMeta.server._experimentalDataLoader2 ? loading : tableMeta.server.loading}\n name=\"table-search\"\n onClickFindPrevious={handlePreviousResult}\n onClickFindNext={handleNextResult}\n onChange={handleChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={texts.table.search.placeholder}\n settingsContent={settings}\n ref={ref}\n shortcut={{ key: 'f', meta: true, shift: false }}\n showTotal={!tableMeta.server._experimentalDataLoader2}\n value={query}\n />\n </>\n );\n}\n"],"names":["Search","props","scrollToIndex","table","tableRef","texts","useLocalization","ref","React","useRef","tableMeta","options","meta","query","getState","globalFilter","scrollTo","rowIndex","align","hiddenColumns","getHiddenColumns","columnVisibility","useEffect","search","highlightedColumnIndexes","length","handleFocus","server","loadAllIfNeeded","_experimentalDataLoader2","Promise","resolve","sorting","columnFilters","undefined","then","_temp","e","reject","loading","setLoading","useState","searchTimeoutRef","handleChange","setGlobalFilter","String","enableGlobalFilter","handleSearch","clearTimeout","current","setTimeout","_tableMeta$search$han","_tableMeta$search","call","handleToggleExcludeUnmatchedResults","enabled","setEnableGlobalFilter","requestAnimationFrame","_ref$current","focus","handleNextResult","nextIndex","currentHighlightColumnIndex","setCurrentHighlightColumnIndex","handlePreviousResult","settings","Switch","label","excludeUnmatchedResults","checked","onChange","handleKeyDown","event","key","cellIndex","rowActive","setRowActiveIndex","cell","_tableRef$current","querySelector","_cell$focus","SearchInput2","findCurrent","findTotal","_tableMeta$search$hig","_tableMeta$search$hig2","name","onClickFindPrevious","onClickFindNext","onFocus","onKeyDown","placeholder","settingsContent","shortcut","shift","showTotal","value"],"mappings":"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"}
@@ -10,7 +10,7 @@ function useTableGlobalShortcuts(table, tableRef, scrollToIndex) {
10
10
  if (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current) || isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current)) {
11
11
  return;
12
12
  }
13
- tableMeta.rowActive.handleKeyDown(event, rows.length, scrollToIndex);
13
+ tableMeta.rowActive.handleKeyDown(event, tableMeta.length, scrollToIndex);
14
14
  tableMeta.rowSelection.handleKeyDown(event, table);
15
15
  if (tableMeta.rowActive.rowActiveIndex !== undefined) {
16
16
  var _rows$tableMeta$rowAc;
@@ -23,7 +23,7 @@ function useTableGlobalShortcuts(table, tableRef, scrollToIndex) {
23
23
  };
24
24
  },
25
25
  // scrollToIndex function changes when row count changes, so it is important to update handlers
26
- [tableRef.current, tableMeta.rowActive.rowActiveIndex, scrollToIndex]);
26
+ [tableRef.current, tableMeta.length, tableMeta.rowActive.rowActiveIndex, scrollToIndex]);
27
27
  }
28
28
 
29
29
  export { useTableGlobalShortcuts };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableGlobalShortcuts.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableGlobalShortcuts.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { TableRef } from '../../types';\nimport {\n isElementInsideOrTriggeredFromContainer,\n isElementInsideOverlay,\n isElementInteractive,\n isSiblingElementInsideSameParentOverlay,\n} from '../../../../utils/dom';\n\nexport function useTableGlobalShortcuts<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const rows = table.getRowModel().rows;\n\n React.useEffect(\n () => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const trigger = event.target as HTMLElement;\n\n if (\n (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current)) ||\n (isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current))\n ) {\n return;\n }\n\n tableMeta.rowActive.handleKeyDown(event, rows.length, scrollToIndex);\n tableMeta.rowSelection.handleKeyDown(event, table);\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n tableMeta.rowClick.handleKeyDown(event, rows[tableMeta.rowActive.rowActiveIndex]?.original);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n },\n\n // scrollToIndex function changes when row count changes, so it is important to update handlers\n [tableRef.current, tableMeta.rowActive.rowActiveIndex, scrollToIndex]\n );\n}\n"],"names":["useTableGlobalShortcuts","table","tableRef","scrollToIndex","tableMeta","options","meta","rows","getRowModel","React","useEffect","handleKeyDown","event","trigger","target","isElementInsideOverlay","isSiblingElementInsideSameParentOverlay","current","isElementInteractive","isElementInsideOrTriggeredFromContainer","rowActive","length","rowSelection","rowActiveIndex","undefined","_rows$tableMeta$rowAc","rowClick","original","document","addEventListener","removeEventListener"],"mappings":";;;SAUgBA,uBAAuBA,CACnCC,KAAwB,EACxBC,QAAmC,EACnCC,aAAsC;EAEtC,MAAMC,SAAS,GAAGH,KAAK,CAACI,OAAO,CAACC,IAA6B;EAC7D,MAAMC,IAAI,GAAGN,KAAK,CAACO,WAAW,EAAE,CAACD,IAAI;EAErCE,cAAK,CAACC,SAAS,CACX;IACI,MAAMC,aAAa,GAAIC,KAAoB;MACvC,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAqB;MAE3C,IACKC,sBAAsB,CAACF,OAAO,CAAC,IAAI,CAACG,uCAAuC,CAACH,OAAO,EAAEX,QAAQ,CAACe,OAAO,CAAC,IACtGC,oBAAoB,CAACL,OAAO,CAAC,IAAI,CAACM,uCAAuC,CAACN,OAAO,EAAEX,QAAQ,CAACe,OAAO,CAAE,EACxG;QACE;;MAGJb,SAAS,CAACgB,SAAS,CAACT,aAAa,CAACC,KAAK,EAAEL,IAAI,CAACc,MAAM,EAAElB,aAAa,CAAC;MACpEC,SAAS,CAACkB,YAAY,CAACX,aAAa,CAACC,KAAK,EAAEX,KAAK,CAAC;MAElD,IAAIG,SAAS,CAACgB,SAAS,CAACG,cAAc,KAAKC,SAAS,EAAE;QAAA,IAAAC,qBAAA;QAClDrB,SAAS,CAACsB,QAAQ,CAACf,aAAa,CAACC,KAAK,GAAAa,qBAAA,GAAElB,IAAI,CAACH,SAAS,CAACgB,SAAS,CAACG,cAAc,CAAC,cAAAE,qBAAA,uBAAxCA,qBAAA,CAA0CE,QAAQ,CAAC;;KAElG;IAEDC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAElB,aAAa,CAAC;IAEnD,OAAO;MACHiB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEnB,aAAa,CAAC;KACzD;GACJ;;EAGD,CAACT,QAAQ,CAACe,OAAO,EAAEb,SAAS,CAACgB,SAAS,CAACG,cAAc,EAAEpB,aAAa,CAAC,CACxE;AACL;;;;"}
1
+ {"version":3,"file":"useTableGlobalShortcuts.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableGlobalShortcuts.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { TableRef } from '../../types';\nimport {\n isElementInsideOrTriggeredFromContainer,\n isElementInsideOverlay,\n isElementInteractive,\n isSiblingElementInsideSameParentOverlay,\n} from '../../../../utils/dom';\n\nexport function useTableGlobalShortcuts<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const rows = table.getRowModel().rows;\n\n React.useEffect(\n () => {\n const handleKeyDown = (event: KeyboardEvent) => {\n const trigger = event.target as HTMLElement;\n\n if (\n (isElementInsideOverlay(trigger) && !isSiblingElementInsideSameParentOverlay(trigger, tableRef.current)) ||\n (isElementInteractive(trigger) && !isElementInsideOrTriggeredFromContainer(trigger, tableRef.current))\n ) {\n return;\n }\n\n tableMeta.rowActive.handleKeyDown(event, tableMeta.length, scrollToIndex);\n tableMeta.rowSelection.handleKeyDown(event, table);\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n tableMeta.rowClick.handleKeyDown(event, rows[tableMeta.rowActive.rowActiveIndex]?.original);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n },\n\n // scrollToIndex function changes when row count changes, so it is important to update handlers\n [tableRef.current, tableMeta.length, tableMeta.rowActive.rowActiveIndex, scrollToIndex]\n );\n}\n"],"names":["useTableGlobalShortcuts","table","tableRef","scrollToIndex","tableMeta","options","meta","rows","getRowModel","React","useEffect","handleKeyDown","event","trigger","target","isElementInsideOverlay","isSiblingElementInsideSameParentOverlay","current","isElementInteractive","isElementInsideOrTriggeredFromContainer","rowActive","length","rowSelection","rowActiveIndex","undefined","_rows$tableMeta$rowAc","rowClick","original","document","addEventListener","removeEventListener"],"mappings":";;;SAUgBA,uBAAuBA,CACnCC,KAAwB,EACxBC,QAAmC,EACnCC,aAAsC;EAEtC,MAAMC,SAAS,GAAGH,KAAK,CAACI,OAAO,CAACC,IAA6B;EAC7D,MAAMC,IAAI,GAAGN,KAAK,CAACO,WAAW,EAAE,CAACD,IAAI;EAErCE,cAAK,CAACC,SAAS,CACX;IACI,MAAMC,aAAa,GAAIC,KAAoB;MACvC,MAAMC,OAAO,GAAGD,KAAK,CAACE,MAAqB;MAE3C,IACKC,sBAAsB,CAACF,OAAO,CAAC,IAAI,CAACG,uCAAuC,CAACH,OAAO,EAAEX,QAAQ,CAACe,OAAO,CAAC,IACtGC,oBAAoB,CAACL,OAAO,CAAC,IAAI,CAACM,uCAAuC,CAACN,OAAO,EAAEX,QAAQ,CAACe,OAAO,CAAE,EACxG;QACE;;MAGJb,SAAS,CAACgB,SAAS,CAACT,aAAa,CAACC,KAAK,EAAER,SAAS,CAACiB,MAAM,EAAElB,aAAa,CAAC;MACzEC,SAAS,CAACkB,YAAY,CAACX,aAAa,CAACC,KAAK,EAAEX,KAAK,CAAC;MAElD,IAAIG,SAAS,CAACgB,SAAS,CAACG,cAAc,KAAKC,SAAS,EAAE;QAAA,IAAAC,qBAAA;QAClDrB,SAAS,CAACsB,QAAQ,CAACf,aAAa,CAACC,KAAK,GAAAa,qBAAA,GAAElB,IAAI,CAACH,SAAS,CAACgB,SAAS,CAACG,cAAc,CAAC,cAAAE,qBAAA,uBAAxCA,qBAAA,CAA0CE,QAAQ,CAAC;;KAElG;IAEDC,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAElB,aAAa,CAAC;IAEnD,OAAO;MACHiB,QAAQ,CAACE,mBAAmB,CAAC,SAAS,EAAEnB,aAAa,CAAC;KACzD;GACJ;;EAGD,CAACT,QAAQ,CAACe,OAAO,EAAEb,SAAS,CAACiB,MAAM,EAAEjB,SAAS,CAACgB,SAAS,CAACG,cAAc,EAAEpB,aAAa,CAAC,CAC1F;AACL;;;;"}
@@ -2,6 +2,7 @@ import React__default from 'react';
2
2
  import { useVirtualizer, defaultRangeExtractor } from '@tanstack/react-virtual';
3
3
  import { ROW_HEIGHT_ESTIMATES } from '../util/rows.js';
4
4
  import { Row } from '../components/Row/Row.js';
5
+ import { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow.js';
5
6
 
6
7
  // scroll padding end is designed to always show half of the next row
7
8
  function getScrollPaddingEndOffset(table) {
@@ -27,31 +28,34 @@ function getPaddingEndOffset(table, options) {
27
28
  const bottomRows = (_table$getBottomRows = table.getBottomRows()) !== null && _table$getBottomRows !== void 0 ? _table$getBottomRows : [];
28
29
  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;
29
30
  }
30
- function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, options) {
31
- var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _ref, _virtualItems;
31
+ // A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well
32
+ const OVERSCAN_ROW_COUNT = 8;
33
+ function useTableRenderer(renderers, table, tableRef, length, defaultRowActiveIndex, options) {
34
+ var _table$getState$group, _table$getCenterRows, _virtualItems$padding, _virtualItems$padding2, _virtualItems$padding3, _virtualItems$end, _virtualItems;
32
35
  const tableMeta = table.options.meta;
33
36
  const isTableRowGrouped = !!((_table$getState$group = table.getState().grouping) !== null && _table$getState$group !== void 0 && _table$getState$group.length);
34
37
  const rows = (_table$getCenterRows = table.getCenterRows()) !== null && _table$getCenterRows !== void 0 ? _table$getCenterRows : [];
35
- // expanded rows
36
- const {
37
- createRowMeasurer,
38
- estimateSize
39
- } = useRowHeightVirtualisation(table);
40
38
  // row groups
41
39
  const rangeExtractor = useRowGroupVirtualisation(table);
42
40
  // account for thead and tfoot in the scroll area - both are always medium row height
43
41
  const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;
42
+ const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;
44
43
  const virtualiser = useVirtualizer({
45
- count: rows.length,
46
- estimateSize,
44
+ count,
45
+ estimateSize: () => {
46
+ return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;
47
+ },
47
48
  getScrollElement: () => tableRef.current,
48
- overscan: tableMeta.printing.isPrinting ? rows.length : undefined,
49
+ overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,
49
50
  rangeExtractor,
50
51
  // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list
51
52
  scrollPaddingStart,
52
53
  scrollPaddingEnd: getScrollPaddingEndOffset(table),
53
54
  paddingEnd: getPaddingEndOffset(table, options)
54
55
  });
56
+ React__default.useEffect(() => {
57
+ virtualiser.measure();
58
+ }, [table.getState().expanded]);
55
59
  const totalSize = virtualiser.getTotalSize();
56
60
  const virtualItems = virtualiser.getVirtualItems();
57
61
  const scrollToIndex = React__default.useCallback((index, options = {
@@ -65,19 +69,19 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
65
69
  if (tableRef.current) {
66
70
  if (index === 0) {
67
71
  virtualiser.scrollToOffset(0, notSmooth);
68
- } else if (index === rows.length - 1) {
72
+ } else if (index === count - 1) {
69
73
  // sometimes the last row doesn't fully show, so we just force scroll to the bottom
70
74
  tableRef.current.scrollTop = tableRef.current.scrollHeight;
71
75
  } else {
72
76
  virtualiser.scrollToIndex(index, options);
73
77
  }
74
78
  }
75
- }, [virtualItems.length, tableRef.current, totalSize, rows.length]);
79
+ }, [virtualItems.length, tableRef.current, totalSize, count]);
76
80
  // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0
77
- const paddingStartIndex = isTableRowGrouped && rows.length > 1 ? 1 : 0;
81
+ const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;
78
82
  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;
79
83
  // styling for offsetting rows - this "is" the virtualisation
80
- 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];
84
+ const [paddingTop, paddingBottom] = virtualItems.length > 0 ? [Math.max(0, startValue !== null && startValue !== void 0 ? startValue : 0), Math.max(0, totalSize - ((_virtualItems$end = (_virtualItems = virtualItems[virtualItems.length - 1]) === null || _virtualItems === void 0 ? void 0 : _virtualItems.end) !== null && _virtualItems$end !== void 0 ? _virtualItems$end : 0))] : [0, 0];
81
85
  // ensure default active rows are scrolled to
82
86
  React__default.useEffect(() => {
83
87
  if (defaultRowActiveIndex) {
@@ -90,23 +94,54 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
90
94
  // rendered output
91
95
  let style = {};
92
96
  let content = null;
93
- if (rows.length) {
97
+ // bottom rows aren't virtualised (they're sticky) but we need to set the height
98
+ if (count || table.getBottomRows().length) {
94
99
  style = {
95
100
  height: totalSize,
96
- paddingBottom,
97
- paddingTop
101
+ paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,
102
+ paddingTop: isNaN(paddingTop) ? 0 : paddingTop
98
103
  };
104
+ }
105
+ // only render non sticky rows
106
+ if (count) {
99
107
  content = virtualItems.map(virtualRow => {
108
+ var _row, _virtualiser$scrollDi2;
100
109
  // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here
101
110
  if (!virtualRow) {
102
111
  return null;
103
112
  }
104
- const row = rows[virtualRow.index];
105
- const measureRow = createRowMeasurer(virtualiser.resizeItem, virtualRow);
113
+ let row;
114
+ if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {
115
+ var _tableMeta$server$pag, _tableMeta$server$pag2;
116
+ const currentPageIndex = Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize / tableMeta.server.pageSize;
117
+ 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;
118
+ if (pagePosition > -1) {
119
+ // "flatten" row indexes down into the dataloader2 dataset size
120
+ // for example, with a page size of 100...
121
+ // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)
122
+ const fakeIndex = pagePosition * tableMeta.server.pageSize + virtualRow.index % tableMeta.server.pageSize;
123
+ row = rows[fakeIndex];
124
+ }
125
+ } else {
126
+ row = rows[virtualRow.index];
127
+ }
128
+ if (!((_row = row) !== null && _row !== void 0 && _row.original)) {
129
+ var _virtualiser$scrollDi;
130
+ return /*#__PURE__*/React__default.createElement(SkeletonRow, {
131
+ key: virtualRow.index,
132
+ index: virtualRow.index,
133
+ scrollDirection: (_virtualiser$scrollDi = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi !== void 0 ? _virtualiser$scrollDi : undefined,
134
+ table: table
135
+ });
136
+ }
137
+ const measureRow = rowHeight => {
138
+ virtualiser.resizeItem(virtualRow, rowHeight);
139
+ };
106
140
  return /*#__PURE__*/React__default.createElement(Row, {
107
141
  key: row.id,
108
142
  row: row,
109
143
  index: virtualRow.index,
144
+ scrollDirection: (_virtualiser$scrollDi2 = virtualiser.scrollDirection) !== null && _virtualiser$scrollDi2 !== void 0 ? _virtualiser$scrollDi2 : undefined,
110
145
  table: table,
111
146
  measureRow: measureRow,
112
147
  renderer: renderers.row,
@@ -120,43 +155,6 @@ function useTableRenderer(renderers, table, tableRef, defaultRowActiveIndex, opt
120
155
  scrollToIndex
121
156
  };
122
157
  }
123
- // support varying row heights - variable row heights, row expansion
124
- function useRowHeightVirtualisation(table) {
125
- const tableMeta = table.options.meta;
126
- const rows = table.getRowModel().rows;
127
- const expandedState = table.getState().expanded;
128
- const [expandedRowHeightsCache, setExpandedRowHeightsCache] = React__default.useState({});
129
- // look at all registered expanded row heights and use them to form a more accurate average size
130
- // it might be worth considering if taking the max, or an upper bound, would be better
131
- const averageExpandedRowHeight = React__default.useMemo(() => {
132
- const values = Object.values(expandedRowHeightsCache);
133
- return values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;
134
- }, [expandedRowHeightsCache]);
135
- // row heights
136
- const estimateSize = React__default.useCallback(index => {
137
- var _rows$index, _rows$index$getIsExpa;
138
- const rowHeight = tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;
139
- if (expandedState === true || (_rows$index = rows[index]) !== null && _rows$index !== void 0 && (_rows$index$getIsExpa = _rows$index.getIsExpanded) !== null && _rows$index$getIsExpa !== void 0 && _rows$index$getIsExpa.call(_rows$index)) {
140
- return rowHeight + averageExpandedRowHeight;
141
- }
142
- return rowHeight;
143
- }, [tableMeta.rowHeight.height, averageExpandedRowHeight, expandedState]);
144
- const createRowMeasurer = React__default.useCallback((resizeItem, virtualRow) => (rowHeight, expansionHeight) => {
145
- // register the expansion height so that it can be used to determine an average
146
- if (expansionHeight) {
147
- setExpandedRowHeightsCache(cache => ({
148
- ...cache,
149
- [virtualRow.index]: expansionHeight
150
- }));
151
- }
152
- // update the whole row's size to include the expanded height
153
- resizeItem(virtualRow, rowHeight + (expansionHeight !== null && expansionHeight !== void 0 ? expansionHeight : 0));
154
- }, []);
155
- return {
156
- estimateSize,
157
- createRowMeasurer
158
- };
159
- }
160
158
  // support virtualised row groups (where the row group headers are sticky)
161
159
  function useRowGroupVirtualisation(table) {
162
160
  const rows = table.getRowModel().rows;
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n VirtualItem,\n Range,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n\n const rows = table.getCenterRows() ?? [];\n\n // expanded rows\n const { createRowMeasurer, estimateSize } = useRowHeightVirtualisation<TType>(table);\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const virtualiser = useVirtualizer({\n count: rows.length,\n estimateSize,\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? rows.length : undefined,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === rows.length - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, rows.length]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && rows.length > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - virtualItems[virtualItems.length - 1]?.end ?? 0)]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n if (rows.length) {\n style = {\n height: totalSize,\n paddingBottom,\n paddingTop,\n };\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n const row = rows[virtualRow.index];\n const measureRow = createRowMeasurer(virtualiser.resizeItem, virtualRow);\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support varying row heights - variable row heights, row expansion\nfunction useRowHeightVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const rows = table.getRowModel().rows;\n const expandedState = table.getState().expanded;\n\n const [expandedRowHeightsCache, setExpandedRowHeightsCache] = React.useState<Record<number, number>>({});\n\n // look at all registered expanded row heights and use them to form a more accurate average size\n // it might be worth considering if taking the max, or an upper bound, would be better\n const averageExpandedRowHeight = React.useMemo(() => {\n const values: number[] = Object.values(expandedRowHeightsCache);\n return values.length ? values.reduce((a, b) => a + b, 0) / values.length : 0;\n }, [expandedRowHeightsCache]);\n\n // row heights\n const estimateSize = React.useCallback(\n (index: number) => {\n const rowHeight = tableMeta.rowHeight.height\n ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height]\n : ROW_HEIGHT_ESTIMATES.medium;\n\n if (expandedState === true || rows[index]?.getIsExpanded?.()) {\n return rowHeight + averageExpandedRowHeight;\n }\n\n return rowHeight;\n },\n [tableMeta.rowHeight.height, averageExpandedRowHeight, expandedState]\n );\n\n const createRowMeasurer = React.useCallback(\n (resizeItem: (item: VirtualItem, size: number) => void, virtualRow: VirtualItem) =>\n (rowHeight: number, expansionHeight?: number) => {\n // register the expansion height so that it can be used to determine an average\n if (expansionHeight) {\n setExpandedRowHeightsCache(cache => ({ ...cache, [virtualRow.index]: expansionHeight }));\n }\n\n // update the whole row's size to include the expanded height\n resizeItem(virtualRow, rowHeight + (expansionHeight ?? 0));\n },\n []\n );\n\n return { estimateSize, createRowMeasurer };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","createRowMeasurer","estimateSize","useRowHeightVirtualisation","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","virtualiser","useVirtualizer","count","getScrollElement","current","overscan","printing","isPrinting","undefined","scrollPaddingEnd","paddingEnd","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","React","useCallback","index","align","behavior","notSmooth","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","paddingTop","paddingBottom","Math","max","_ref","_virtualItems","end","useEffect","style","content","map","virtualRow","row","measureRow","resizeItem","Row","key","id","renderer","cellRenderer","cell","getRowModel","expandedState","expanded","expandedRowHeightsCache","setExpandedRowHeightsCache","useState","averageExpandedRowHeight","useMemo","values","Object","reduce","a","b","_rows$index","_rows$index$getIsExpa","getIsExpanded","call","expansionHeight","cache","isTableGrouped","rowGroupIndexes","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort"],"mappings":";;;;;AAcA;AACA,SAASA,yBAAyBA,CAAkBC,KAAwB;EACxE,MAAMC,SAAS,GAAGD,KAAK,CAACE,OAAO,CAACC,IAA6B;EAC7D,IAAIC,MAAM,GAAG,CAAC;EAEd,IAAIH,SAAS,CAACI,MAAM,CAACC,SAAS,EAAE;IAC5BF,MAAM,IAAI,CAAC;;EAGf,IAAIJ,KAAK,CAACO,eAAe,EAAE,CAACC,MAAM,GAAG,CAAC,EAAE;IACpCJ,MAAM,IAAIJ,KAAK,CAACO,eAAe,EAAE,CAACC,MAAM,GAAG,CAAC;;EAGhD,IAAIC,MAAM,GAAGC,oBAAoB,CAACC,MAAM,GAAGP,MAAM;EAEjD,MAAMQ,UAAU,GAAGZ,KAAK,CAACa,aAAa,EAAE;EAExC,IAAID,UAAU,CAACJ,MAAM,EAAE;;IAEnBC,MAAM,IAAIC,oBAAoB,CAACT,SAAS,CAACa,SAAS,CAACL,MAAM,CAAC,GAAG,GAAG,GAAGG,UAAU,CAACJ,MAAM;;EAGxF,OAAOC,MAAM;AACjB;AAEA;AACA,SAASM,mBAAmBA,CAAkBf,KAAwB,EAAEE,OAA+B;;EACnG,MAAMU,UAAU,IAAAI,oBAAA,GAAGhB,KAAK,CAACa,aAAa,EAAE,cAAAG,oBAAA,cAAAA,oBAAA,GAAI,EAAE;EAC9C,OAAON,oBAAoB,CAACC,MAAM,KAAAM,qBAAA,GAAIf,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEgB,2BAA2B,cAAAD,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,GAAGL,UAAU,CAACJ,MAAM;AACxG;SAEgBW,gBAAgBA,CAC5BC,SAAmC,EACnCpB,KAAwB,EACxBqB,QAAmC,EACnCC,qBAA0C,EAC1CpB,OAA+B;;EAE/B,MAAMD,SAAS,GAAGD,KAAK,CAACE,OAAO,CAACC,IAA6B;EAC7D,MAAMoB,iBAAiB,GAAG,CAAC,GAAAC,qBAAA,GAACxB,KAAK,CAACyB,QAAQ,EAAE,CAACC,QAAQ,cAAAF,qBAAA,eAAzBA,qBAAA,CAA2BhB,MAAM;EAE7D,MAAMmB,IAAI,IAAAC,oBAAA,GAAG5B,KAAK,CAAC6B,aAAa,EAAE,cAAAD,oBAAA,cAAAA,oBAAA,GAAI,EAAE;;EAGxC,MAAM;IAAEE,iBAAiB;IAAEC;GAAc,GAAGC,0BAA0B,CAAQhC,KAAK,CAAC;;EAGpF,MAAMiC,cAAc,GAAGC,yBAAyB,CAAQlC,KAAK,CAAC;;EAG9D,MAAMmC,kBAAkB,GAAGzB,oBAAoB,CAACC,MAAM;EAEtD,MAAMyB,WAAW,GAAGC,cAAc,CAAC;IAC/BC,KAAK,EAAEX,IAAI,CAACnB,MAAM;IAClBuB,YAAY;IACZQ,gBAAgB,EAAEA,MAAMlB,QAAQ,CAACmB,OAAO;IACxCC,QAAQ,EAAExC,SAAS,CAACyC,QAAQ,CAACC,UAAU,GAAGhB,IAAI,CAACnB,MAAM,GAAGoC,SAAS;IACjEX,cAAc;;IAEdE,kBAAkB;IAClBU,gBAAgB,EAAE9C,yBAAyB,CAACC,KAAK,CAAC;IAClD8C,UAAU,EAAE/B,mBAAmB,CAACf,KAAK,EAAEE,OAAO;GACjD,CAAC;EAEF,MAAM6C,SAAS,GAAGX,WAAW,CAACY,YAAY,EAAE;EAC5C,MAAMC,YAAY,GAAGb,WAAW,CAACc,eAAe,EAAE;EAElD,MAAMC,aAAa,GAAGC,cAAK,CAACC,WAAW,CACnC,CAACC,KAAa,EAAEpD,UAAuC;IAAEqD,KAAK,EAAE,MAAM;IAAEC,QAAQ,EAAE;GAAU;IACxF,MAAMC,SAAS,GAAgC;MAAE,GAAGvD,OAAO;MAAEsD,QAAQ,EAAE;KAAQ;IAE/E,IAAInC,QAAQ,CAACmB,OAAO,EAAE;MAClB,IAAIc,KAAK,KAAK,CAAC,EAAE;QACblB,WAAW,CAACsB,cAAc,CAAC,CAAC,EAAED,SAAS,CAAC;OAC3C,MAAM,IAAIH,KAAK,KAAK3B,IAAI,CAACnB,MAAM,GAAG,CAAC,EAAE;;QAElCa,QAAQ,CAACmB,OAAO,CAACmB,SAAS,GAAGtC,QAAQ,CAACmB,OAAO,CAACoB,YAAY;OAC7D,MAAM;QACHxB,WAAW,CAACe,aAAa,CAACG,KAAK,EAAEpD,OAAO,CAAC;;;GAGpD,EACD,CAAC+C,YAAY,CAACzC,MAAM,EAAEa,QAAQ,CAACmB,OAAO,EAAEO,SAAS,EAAEpB,IAAI,CAACnB,MAAM,CAAC,CAClE;;EAGD,MAAMqD,iBAAiB,GAAGtC,iBAAiB,IAAII,IAAI,CAACnB,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;EAEtE,MAAMsD,UAAU,GAAGvC,iBAAiB,GAC9B,EAAAwC,qBAAA,GAAAd,YAAY,CAACY,iBAAiB,CAAC,cAAAE,qBAAA,uBAA/BA,qBAAA,CAAiCC,KAAK,MAAAC,sBAAA,GAAGhB,YAAY,CAACY,iBAAiB,CAAC,cAAAI,sBAAA,uBAA/BA,sBAAA,CAAiCC,IAAI,KAAAC,sBAAA,GAC9ElB,YAAY,CAACY,iBAAiB,CAAC,cAAAM,sBAAA,uBAA/BA,sBAAA,CAAiCH,KAAK;;EAG5C,MAAM,CAACI,UAAU,EAAEC,aAAa,CAAC,GAC7BpB,YAAY,CAACzC,MAAM,GAAG,CAAC,GACjB,CAAC8D,IAAI,CAACC,GAAG,CAAC,CAAC,EAAET,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAI,CAAC,CAAC,EAAEQ,IAAI,CAACC,GAAG,CAAC,CAAC,GAAAC,IAAA,GAAEzB,SAAS,KAAA0B,aAAA,GAAGxB,YAAY,CAACA,YAAY,CAACzC,MAAM,GAAG,CAAC,CAAC,cAAAiE,aAAA,uBAArCA,aAAA,CAAuCC,GAAG,eAAAF,IAAA,cAAAA,IAAA,GAAI,CAAC,CAAC,CAAC,GACxG,CAAC,CAAC,EAAE,CAAC,CAAC;;EAGhBpB,cAAK,CAACuB,SAAS,CAAC;IACZ,IAAIrD,qBAAqB,EAAE;MACvB6B,aAAa,CAAC7B,qBAAqB,EAAE;QAAEiC,KAAK,EAAE,QAAQ;QAAEC,QAAQ,EAAE;OAAQ,CAAC;;GAElF,EAAE,EAAE,CAAC;;EAGN,IAAIoB,KAAK,GAAkB,EAAE;EAC7B,IAAIC,OAAO,GAAkC,IAAI;EAEjD,IAAIlD,IAAI,CAACnB,MAAM,EAAE;IACboE,KAAK,GAAG;MACJnE,MAAM,EAAEsC,SAAS;MACjBsB,aAAa;MACbD;KACH;IACDS,OAAO,GAAG5B,YAAY,CAAC6B,GAAG,CAACC,UAAU;;MAEjC,IAAI,CAACA,UAAU,EAAE;QACb,OAAO,IAAI;;MAEf,MAAMC,GAAG,GAAGrD,IAAI,CAACoD,UAAU,CAACzB,KAAK,CAAC;MAClC,MAAM2B,UAAU,GAAGnD,iBAAiB,CAACM,WAAW,CAAC8C,UAAU,EAAEH,UAAU,CAAC;MACxE,oBACI3B,6BAAC+B,GAAG;QACAC,GAAG,EAAEJ,GAAG,CAACK,EAAE;QACXL,GAAG,EAAEA,GAAG;QACR1B,KAAK,EAAEyB,UAAU,CAACzB,KAAK;QACvBtD,KAAK,EAAEA,KAAK;QACZiF,UAAU,EAAEA,UAAU;QACtBK,QAAQ,EAAElE,SAAS,CAAC4D,GAAG;QACvBO,YAAY,EAAEnE,SAAS,CAACoE;QAC1B;KAET,CAAC;;EAGN,OAAO;IACH7D,IAAI,EAAEkD,OAAO;IACbD,KAAK;IACLzB;GACH;AACL;AAEA;AACA,SAASnB,0BAA0BA,CAAkBhC,KAAwB;EACzE,MAAMC,SAAS,GAAGD,KAAK,CAACE,OAAO,CAACC,IAA6B;EAC7D,MAAMwB,IAAI,GAAG3B,KAAK,CAACyF,WAAW,EAAE,CAAC9D,IAAI;EACrC,MAAM+D,aAAa,GAAG1F,KAAK,CAACyB,QAAQ,EAAE,CAACkE,QAAQ;EAE/C,MAAM,CAACC,uBAAuB,EAAEC,0BAA0B,CAAC,GAAGzC,cAAK,CAAC0C,QAAQ,CAAyB,EAAE,CAAC;;;EAIxG,MAAMC,wBAAwB,GAAG3C,cAAK,CAAC4C,OAAO,CAAC;IAC3C,MAAMC,MAAM,GAAaC,MAAM,CAACD,MAAM,CAACL,uBAAuB,CAAC;IAC/D,OAAOK,MAAM,CAACzF,MAAM,GAAGyF,MAAM,CAACE,MAAM,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,EAAE,CAAC,CAAC,GAAGJ,MAAM,CAACzF,MAAM,GAAG,CAAC;GAC/E,EAAE,CAACoF,uBAAuB,CAAC,CAAC;;EAG7B,MAAM7D,YAAY,GAAGqB,cAAK,CAACC,WAAW,CACjCC,KAAa;;IACV,MAAMxC,SAAS,GAAGb,SAAS,CAACa,SAAS,CAACL,MAAM,GACtCC,oBAAoB,CAACT,SAAS,CAACa,SAAS,CAACL,MAAM,CAAC,GAChDC,oBAAoB,CAACC,MAAM;IAEjC,IAAI+E,aAAa,KAAK,IAAI,KAAAY,WAAA,GAAI3E,IAAI,CAAC2B,KAAK,CAAC,cAAAgD,WAAA,gBAAAC,qBAAA,GAAXD,WAAA,CAAaE,aAAa,cAAAD,qBAAA,eAA1BA,qBAAA,CAAAE,IAAA,CAAAH,YAA8B,EAAE;MAC1D,OAAOxF,SAAS,GAAGiF,wBAAwB;;IAG/C,OAAOjF,SAAS;GACnB,EACD,CAACb,SAAS,CAACa,SAAS,CAACL,MAAM,EAAEsF,wBAAwB,EAAEL,aAAa,CAAC,CACxE;EAED,MAAM5D,iBAAiB,GAAGsB,cAAK,CAACC,WAAW,CACvC,CAAC6B,UAAqD,EAAEH,UAAuB,KAC3E,CAACjE,SAAiB,EAAE4F,eAAwB;;IAExC,IAAIA,eAAe,EAAE;MACjBb,0BAA0B,CAACc,KAAK,KAAK;QAAE,GAAGA,KAAK;QAAE,CAAC5B,UAAU,CAACzB,KAAK,GAAGoD;OAAiB,CAAC,CAAC;;;IAI5FxB,UAAU,CAACH,UAAU,EAAEjE,SAAS,IAAI4F,eAAe,aAAfA,eAAe,cAAfA,eAAe,GAAI,CAAC,CAAC,CAAC;GAC7D,EACL,EAAE,CACL;EAED,OAAO;IAAE3E,YAAY;IAAED;GAAmB;AAC9C;AAEA;AACA,SAASI,yBAAyBA,CAAkBlC,KAAwB;EACxE,MAAM2B,IAAI,GAAG3B,KAAK,CAACyF,WAAW,EAAE,CAAC9D,IAAI;EACrC,MAAMiF,cAAc,GAAG,CAAC,CAAC5G,KAAK,CAACyB,QAAQ,EAAE,CAACC,QAAQ,CAAClB,MAAM;EAEzD,MAAMqG,eAAe,GAAGzD,cAAK,CAAC4C,OAAO,CAAC;IAClC,MAAMc,OAAO,GAAa,EAAE;IAE5B,IAAIF,cAAc,EAAE;MAChBjF,IAAI,CAACoF,OAAO,CAAC,CAAC/B,GAAG,EAAE1B,KAAK;QACpB,IAAI0B,GAAG,CAACgC,YAAY,EAAE,EAAE;UACpBF,OAAO,CAACG,IAAI,CAAC3D,KAAK,CAAC;;OAE1B,CAAC;;IAGN,OAAOwD,OAAO;GACjB,EAAE,CAACnF,IAAI,CAAC,CAAC;;EAGV,MAAMM,cAAc,GAAGmB,cAAK,CAACC,WAAW,CACnC6D,KAAY;;IACT,MAAMC,mBAAmB,IAAAC,aAAA,GACrB,CAAC,GAAGP,eAAe,CAAC,CAACQ,OAAO,EAAE,CAACC,IAAI,CAAChE,KAAK,IAAI4D,KAAK,CAACK,UAAU,IAAIjE,KAAK,CAAC,cAAA8D,aAAA,cAAAA,aAAA,GAAIP,eAAe,CAAC,CAAC,CAAC;IAEjG,MAAMW,IAAI,GAAG,IAAIC,GAAG,CAAC,CAACN,mBAAmB,EAAE,GAAGO,qBAAqB,CAACR,KAAK,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAGM,IAAI,CAAC,CAACG,IAAI,CAAC,CAACvB,CAAC,EAAEC,CAAC,KAAKD,CAAC,GAAGC,CAAC,CAAC;GACzC,EACD,CAACQ,eAAe,CAAC,CACpB;EAED,OAAOD,cAAc,GAAG3E,cAAc,GAAGW,SAAS;AACtD;;;;"}
1
+ {"version":3,"file":"useTableRenderer.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableRenderer.tsx"],"sourcesContent":["import React, { CSSProperties } from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta, Row as ReactTableRow } from '@tanstack/react-table';\nimport {\n useVirtualizer,\n defaultRangeExtractor,\n ScrollToOptions as ReactVirtualScrollToOptions,\n Range,\n} from '@tanstack/react-virtual';\nimport { ROW_HEIGHT_ESTIMATES } from '../util/rows';\nimport { Row } from '../components/Row/Row';\nimport { useTableRenderers, useTableRenderOptions } from '../types';\nimport { TableRef } from '../../types';\nimport { SkeletonRow } from '../components/Row/BuiltIns/SkeletonRow';\n\n// scroll padding end is designed to always show half of the next row\nfunction getScrollPaddingEndOffset<TType = unknown>(table: ReactTable<TType>) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n let offset = 2;\n\n if (tableMeta.footer.isEnabled) {\n offset += 1;\n }\n\n if (table.getHeaderGroups().length > 1) {\n offset += table.getHeaderGroups().length - 1;\n }\n\n let height = ROW_HEIGHT_ESTIMATES.medium * offset;\n\n const bottomRows = table.getBottomRows();\n\n if (bottomRows.length) {\n // 1.4 offsets for half rows and also accounts for increased row heights (which is likely in pinned rows)\n height += ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] * 1.4 * bottomRows.length;\n }\n\n return height;\n}\n\n// scroll padding end is designed to always show half of the next row\nfunction getPaddingEndOffset<TType = unknown>(table: ReactTable<TType>, options?: useTableRenderOptions) {\n const bottomRows = table.getBottomRows() ?? [];\n return ROW_HEIGHT_ESTIMATES.medium * (options?.virtualiserPaddingEndOffset ?? 1) * bottomRows.length;\n}\n\n// A higher number ensure less scroll jumping for dynamic row heights, but too high can reduce performance. 8 worked well\nconst OVERSCAN_ROW_COUNT = 8;\n\nexport function useTableRenderer<TType = unknown>(\n renderers: useTableRenderers<TType>,\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n length: number,\n defaultRowActiveIndex?: number | undefined,\n options?: useTableRenderOptions\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const isTableRowGrouped = !!table.getState().grouping?.length;\n const rows = table.getCenterRows() ?? [];\n\n // row groups\n const rangeExtractor = useRowGroupVirtualisation<TType>(table);\n\n // account for thead and tfoot in the scroll area - both are always medium row height\n const scrollPaddingStart = ROW_HEIGHT_ESTIMATES.medium;\n\n const count = tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2 ? length : rows.length;\n\n const virtualiser = useVirtualizer({\n count,\n estimateSize: () => {\n return tableMeta.rowHeight.height ? ROW_HEIGHT_ESTIMATES[tableMeta.rowHeight.height] : ROW_HEIGHT_ESTIMATES.medium;\n },\n getScrollElement: () => tableRef.current,\n overscan: tableMeta.printing.isPrinting ? count : OVERSCAN_ROW_COUNT,\n rangeExtractor,\n // correctly sets the scroll padding offset, e.g. when keyboard navigating rows in the list\n scrollPaddingStart,\n scrollPaddingEnd: getScrollPaddingEndOffset(table),\n paddingEnd: getPaddingEndOffset(table, options),\n });\n\n React.useEffect(() => {\n virtualiser.measure();\n }, [table.getState().expanded]);\n\n const totalSize = virtualiser.getTotalSize();\n const virtualItems = virtualiser.getVirtualItems();\n\n const scrollToIndex = React.useCallback(\n (index: number, options: ReactVirtualScrollToOptions = { align: 'auto', behavior: 'smooth' }) => {\n const notSmooth: ReactVirtualScrollToOptions = { ...options, behavior: 'auto' };\n\n if (tableRef.current) {\n if (index === 0) {\n virtualiser.scrollToOffset(0, notSmooth);\n } else if (index === count - 1) {\n // sometimes the last row doesn't fully show, so we just force scroll to the bottom\n tableRef.current.scrollTop = tableRef.current.scrollHeight;\n } else {\n virtualiser.scrollToIndex(index, options);\n }\n }\n },\n [virtualItems.length, tableRef.current, totalSize, count]\n );\n\n // use row 1 not 0, because 0 might be sticky in grouped tables and it's start value will always be 0\n const paddingStartIndex = isTableRowGrouped && count > 1 ? 1 : 0;\n\n const startValue = isTableRowGrouped\n ? virtualItems[paddingStartIndex]?.start - virtualItems[paddingStartIndex]?.size\n : virtualItems[paddingStartIndex]?.start;\n\n // styling for offsetting rows - this \"is\" the virtualisation\n const [paddingTop, paddingBottom] =\n virtualItems.length > 0\n ? [Math.max(0, startValue ?? 0), Math.max(0, totalSize - (virtualItems[virtualItems.length - 1]?.end ?? 0))]\n : [0, 0];\n\n // ensure default active rows are scrolled to\n React.useEffect(() => {\n if (defaultRowActiveIndex) {\n scrollToIndex(defaultRowActiveIndex, { align: 'center', behavior: 'auto' });\n }\n }, []);\n\n // rendered output\n let style: CSSProperties = {};\n let content: (JSX.Element | null)[] | null = null;\n\n // bottom rows aren't virtualised (they're sticky) but we need to set the height\n if (count || table.getBottomRows().length) {\n style = {\n height: totalSize,\n paddingBottom: isNaN(paddingBottom) ? 0 : paddingBottom,\n paddingTop: isNaN(paddingTop) ? 0 : paddingTop,\n };\n }\n\n // only render non sticky rows\n if (count) {\n content = virtualItems.map(virtualRow => {\n // there appears to be a react-virtual bug where it inserts a single `undefined` item at the end of the row, which crashes here\n if (!virtualRow) {\n return null;\n }\n\n let row: ReactTableRow<TType> | undefined;\n\n if (tableMeta.server.isEnabled && tableMeta.server._experimentalDataLoader2) {\n const currentPageIndex =\n (Math.floor(virtualRow.index / tableMeta.server.pageSize) * tableMeta.server.pageSize) /\n tableMeta.server.pageSize;\n const pagePosition = tableMeta.server.pages?.indexOf(currentPageIndex) ?? -1;\n\n if (pagePosition > -1) {\n // \"flatten\" row indexes down into the dataloader2 dataset size\n // for example, with a page size of 100...\n // row index 14267 is actually one of index 67, 167, 267 etc within the dataset (depending on number of pages stored)\n const fakeIndex = pagePosition * tableMeta.server.pageSize + (virtualRow.index % tableMeta.server.pageSize);\n row = rows[fakeIndex];\n }\n } else {\n row = rows[virtualRow.index];\n }\n\n if (!row?.original) {\n return (\n <SkeletonRow\n key={virtualRow.index}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n />\n );\n }\n\n const measureRow = (rowHeight: number) => {\n virtualiser.resizeItem(virtualRow, rowHeight);\n };\n\n return (\n <Row\n key={row.id}\n row={row}\n index={virtualRow.index}\n scrollDirection={virtualiser.scrollDirection ?? undefined}\n table={table}\n measureRow={measureRow}\n renderer={renderers.row}\n cellRenderer={renderers.cell}\n />\n );\n });\n }\n\n return {\n rows: content,\n style,\n scrollToIndex,\n };\n}\n\n// support virtualised row groups (where the row group headers are sticky)\nfunction useRowGroupVirtualisation<TType = unknown>(table: ReactTable<TType>) {\n const rows = table.getRowModel().rows;\n const isTableGrouped = !!table.getState().grouping.length;\n\n const rowGroupIndexes = React.useMemo(() => {\n const indexes: number[] = [];\n\n if (isTableGrouped) {\n rows.forEach((row, index) => {\n if (row.getIsGrouped()) {\n indexes.push(index);\n }\n });\n }\n\n return indexes;\n }, [rows]);\n\n // this is taken from the react-virtual docs/examples\n const rangeExtractor = React.useCallback(\n (range: Range) => {\n const activeRowGroupIndex =\n [...rowGroupIndexes].reverse().find(index => range.startIndex >= index) ?? rowGroupIndexes[0];\n\n const next = new Set([activeRowGroupIndex, ...defaultRangeExtractor(range)]);\n return [...next].sort((a, b) => a - b);\n },\n [rowGroupIndexes]\n );\n\n return isTableGrouped ? rangeExtractor : undefined;\n}\n"],"names":["getScrollPaddingEndOffset","table","tableMeta","options","meta","offset","footer","isEnabled","getHeaderGroups","length","height","ROW_HEIGHT_ESTIMATES","medium","bottomRows","getBottomRows","rowHeight","getPaddingEndOffset","_table$getBottomRows","_options$virtualiserP","virtualiserPaddingEndOffset","OVERSCAN_ROW_COUNT","useTableRenderer","renderers","tableRef","defaultRowActiveIndex","isTableRowGrouped","_table$getState$group","getState","grouping","rows","_table$getCenterRows","getCenterRows","rangeExtractor","useRowGroupVirtualisation","scrollPaddingStart","count","server","_experimentalDataLoader2","virtualiser","useVirtualizer","estimateSize","getScrollElement","current","overscan","printing","isPrinting","scrollPaddingEnd","paddingEnd","React","useEffect","measure","expanded","totalSize","getTotalSize","virtualItems","getVirtualItems","scrollToIndex","useCallback","index","align","behavior","notSmooth","scrollToOffset","scrollTop","scrollHeight","paddingStartIndex","startValue","_virtualItems$padding","start","_virtualItems$padding2","size","_virtualItems$padding3","paddingTop","paddingBottom","Math","max","_virtualItems$end","_virtualItems","end","style","content","isNaN","map","virtualRow","row","_tableMeta$server$pag","_tableMeta$server$pag2","currentPageIndex","floor","pageSize","pagePosition","pages","indexOf","fakeIndex","_row","original","_virtualiser$scrollDi","SkeletonRow","key","scrollDirection","undefined","measureRow","resizeItem","Row","id","_virtualiser$scrollDi2","renderer","cellRenderer","cell","getRowModel","isTableGrouped","rowGroupIndexes","useMemo","indexes","forEach","getIsGrouped","push","range","activeRowGroupIndex","_reverse$find","reverse","find","startIndex","next","Set","defaultRangeExtractor","sort","a","b"],"mappings":"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"}
@@ -57,9 +57,9 @@ function useTableStyleGrid(tableId, table, fontSize) {
57
57
  };
58
58
  // printing grid
59
59
  // we have to be specific so that nested tables don't inherit the same css
60
- const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\n`).join(',');
60
+ const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\n`).join(',');
61
61
  const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }
62
- table[data-taco^='table']#${tableId} [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; }}`;
62
+ table[data-taco^='table']#${tableId} [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;
63
63
  return {
64
64
  style,
65
65
  stylesheet
@@ -1 +1 @@
1
- {"version":3,"file":"useTableStyleGrid.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { TableFontSize } from '../../types';\nimport { getCellMinWidth, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = getCellMinWidth(fontSize);\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8; /* button margins l+r */\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = `minmax(max-content, 1fr)`;\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = `minmax(max-content, auto)`;\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; }}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["useTableStyleGrid","tableId","table","fontSize","tableMeta","options","meta","allVisibleColumns","getVisibleLeafColumns","columnSizing","getState","globalMinSize","getCellMinWidth","gridTemplateRows","getRowModel","rows","length","React","useMemo","printGridTemplateColumns","printHiddenColumns","gridTemplateColumns","reduce","accum","column","index","enableGrouping","getIsGrouped","minSize","_column$columnDef$min","columnDef","width","id","size","isInternalColumn","minWidth","rowActions","rowActionsLength","getSize","undefined","isLastColumn","Number","isNaN","_column$columnDef$met","enablePrinting","push","trim","style","hiddenColumns","map","join","stylesheet"],"mappings":"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"}
1
+ {"version":3,"file":"useTableStyleGrid.js","sources":["../../../../../../../../../src/primitives/Table/Core/features/useTableStyleGrid.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { TableFontSize } from '../../types';\nimport { getCellMinWidth, isInternalColumn } from '../../useTableManager/util/columns';\n\nexport function useTableStyleGrid<TType = unknown>(tableId: string, table: ReactTable<TType>, fontSize: TableFontSize) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const allVisibleColumns = table.getVisibleLeafColumns();\n const columnSizing = table.getState().columnSizing;\n const globalMinSize = getCellMinWidth(fontSize);\n\n // header body ?footer\n const gridTemplateRows = table.getRowModel().rows.length ? 'min-content 1fr min-content' : 'min-content 1fr';\n\n return React.useMemo(() => {\n let printGridTemplateColumns = 0;\n const printHiddenColumns: string[] = [];\n\n const gridTemplateColumns = allVisibleColumns.reduce((accum, column, index) => {\n if (table.options.enableGrouping && column.getIsGrouped()) {\n return accum;\n }\n\n const minSize = column.columnDef.minSize ?? globalMinSize;\n const width = columnSizing[column.id] as number | 'grow';\n\n let size;\n\n if (isInternalColumn(column.id)) {\n if (column.id === '__actions') {\n const minWidth = tableMeta.rowActions.rowActionsLength * 32 + 8; /* button margins l+r */\n size = `minmax(${minWidth}px, auto)`;\n } else {\n // getSize method is used instead of columnSizing state because internal columns have defined widths\n size = `${column.getSize()}px`;\n }\n } else if (width !== undefined) {\n const isLastColumn = index === allVisibleColumns.length - 1;\n\n if (width === 'grow' || (Number.isNaN(width) && !isLastColumn)) {\n size = `minmax(max-content, 1fr)`;\n } else {\n const minWidth = width < minSize ? minSize : width;\n\n if (isLastColumn) {\n size = `minmax(${minWidth}px, auto)`;\n } else {\n size = `${minWidth}px`;\n }\n }\n } else {\n size = `minmax(max-content, auto)`;\n }\n\n // printing\n if (column.columnDef.meta?.enablePrinting === false) {\n printHiddenColumns.push(column.id);\n } else {\n printGridTemplateColumns++;\n }\n\n return `${accum} ${size}`.trim();\n }, '');\n\n // normal grid\n const style: React.CSSProperties = {\n gridTemplateColumns,\n gridTemplateRows,\n };\n\n // printing grid\n // we have to be specific so that nested tables don't inherit the same css\n const hiddenColumns = printHiddenColumns\n .map(\n id =>\n `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\\n`\n )\n .join(',');\n const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }\n table[data-taco^='table']#${tableId} [data-cell-id^='__']${\n hiddenColumns ? `, ${hiddenColumns}` : ''\n } { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;\n\n return { style, stylesheet };\n }, [allVisibleColumns, columnSizing, globalMinSize, tableMeta.rowActions.rowActionsLength]);\n}\n"],"names":["useTableStyleGrid","tableId","table","fontSize","tableMeta","options","meta","allVisibleColumns","getVisibleLeafColumns","columnSizing","getState","globalMinSize","getCellMinWidth","gridTemplateRows","getRowModel","rows","length","React","useMemo","printGridTemplateColumns","printHiddenColumns","gridTemplateColumns","reduce","accum","column","index","enableGrouping","getIsGrouped","minSize","_column$columnDef$min","columnDef","width","id","size","isInternalColumn","minWidth","rowActions","rowActionsLength","getSize","undefined","isLastColumn","Number","isNaN","_column$columnDef$met","enablePrinting","push","trim","style","hiddenColumns","map","join","stylesheet"],"mappings":"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"}
@@ -22,7 +22,7 @@ function useTable(props, externalRef, renderers, meta, options) {
22
22
  // configure the table
23
23
  const manager = useTableManager(props, meta, INTERNAL_RENDERERS);
24
24
  // configure the virtualised renderer
25
- const renderer = useTableRenderer(renderers, manager.instance, ref, props.defaultRowActiveIndex, options);
25
+ const renderer = useTableRenderer(renderers, manager.instance, ref, manager.meta.length, props.defaultRowActiveIndex, options);
26
26
  // configure dynamic styling
27
27
  const {
28
28
  style,