@economic/taco 14.1.1 → 14.2.0-tanstack-virtual-update.0

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 (279) hide show
  1. package/dist/charts/components/Area/AreaChart.cjs +2 -2
  2. package/dist/charts/components/Area/AreaChart.cjs.map +1 -1
  3. package/dist/charts/components/Area/AreaChart.js +2 -2
  4. package/dist/charts/components/Area/AreaChart.js.map +1 -1
  5. package/dist/charts/components/Bar/BarChart.cjs +1 -1
  6. package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
  7. package/dist/charts/components/Bar/BarChart.js +1 -1
  8. package/dist/charts/components/Bar/BarChart.js.map +1 -1
  9. package/dist/charts/components/Line/LineChart.cjs +1 -1
  10. package/dist/charts/components/Line/LineChart.cjs.map +1 -1
  11. package/dist/charts/components/Line/LineChart.js +1 -1
  12. package/dist/charts/components/Line/LineChart.js.map +1 -1
  13. package/dist/components/Datepicker/Datepicker.cjs +4 -14
  14. package/dist/components/Datepicker/Datepicker.cjs.map +1 -1
  15. package/dist/components/Datepicker/Datepicker.js +4 -14
  16. package/dist/components/Datepicker/Datepicker.js.map +1 -1
  17. package/dist/components/HoverCard/HoverCard.cjs +4 -20
  18. package/dist/components/HoverCard/HoverCard.cjs.map +1 -1
  19. package/dist/components/HoverCard/HoverCard.js +5 -21
  20. package/dist/components/HoverCard/HoverCard.js.map +1 -1
  21. package/dist/components/Popover/Popover.cjs +12 -3
  22. package/dist/components/Popover/Popover.cjs.map +1 -1
  23. package/dist/components/Popover/Popover.d.ts +1 -0
  24. package/dist/components/Popover/Popover.js +14 -5
  25. package/dist/components/Popover/Popover.js.map +1 -1
  26. package/dist/components/Popover/util.cjs +2 -2
  27. package/dist/components/Popover/util.cjs.map +1 -1
  28. package/dist/components/Popover/util.d.ts +1 -1
  29. package/dist/components/Popover/util.js +2 -2
  30. package/dist/components/Popover/util.js.map +1 -1
  31. package/dist/components/Provider/Localization.cjs +3 -0
  32. package/dist/components/Provider/Localization.cjs.map +1 -1
  33. package/dist/components/Provider/Localization.d.ts +6 -0
  34. package/dist/components/Provider/Localization.js +3 -0
  35. package/dist/components/Provider/Localization.js.map +1 -1
  36. package/dist/components/Table3/components/Columns/Cell/Cell.cjs +3 -2
  37. package/dist/components/Table3/components/Columns/Cell/Cell.cjs.map +1 -1
  38. package/dist/components/Table3/components/Columns/Cell/Cell.js +3 -2
  39. package/dist/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
  40. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs +6 -5
  41. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.cjs.map +1 -1
  42. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +6 -5
  43. package/dist/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  44. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +9 -8
  45. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
  46. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +9 -8
  47. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  48. package/dist/components/Table3/components/Columns/Cell/util.cjs +2 -1
  49. package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
  50. package/dist/components/Table3/components/Columns/Cell/util.js +2 -1
  51. package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
  52. package/dist/components/Table3/components/Editing/Alert.cjs +2 -1
  53. package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
  54. package/dist/components/Table3/components/Editing/Alert.js +2 -1
  55. package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
  56. package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs +2 -1
  57. package/dist/components/Table3/components/Row/Editing/SaveStatus.cjs.map +1 -1
  58. package/dist/components/Table3/components/Row/Editing/SaveStatus.js +2 -1
  59. package/dist/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
  60. package/dist/components/Table3/components/Row/Row.cjs +2 -1
  61. package/dist/components/Table3/components/Row/Row.cjs.map +1 -1
  62. package/dist/components/Table3/components/Row/Row.js +2 -1
  63. package/dist/components/Table3/components/Row/Row.js.map +1 -1
  64. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs +2 -1
  65. package/dist/components/Table3/components/Toolbar/Editing/Editing.cjs.map +1 -1
  66. package/dist/components/Table3/components/Toolbar/Editing/Editing.js +2 -1
  67. package/dist/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
  68. package/dist/components/Table3/features/useEditingState.cjs +3 -2
  69. package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
  70. package/dist/components/Table3/features/useEditingState.js +3 -2
  71. package/dist/components/Table3/features/useEditingState.js.map +1 -1
  72. package/dist/components/Table3/features/useTableEditing.cjs +4 -3
  73. package/dist/components/Table3/features/useTableEditing.cjs.map +1 -1
  74. package/dist/components/Table3/features/useTableEditing.js +4 -3
  75. package/dist/components/Table3/features/useTableEditing.js.map +1 -1
  76. package/dist/components/Table3/listeners/useTableEditingListener.cjs +2 -1
  77. package/dist/components/Table3/listeners/useTableEditingListener.cjs.map +1 -1
  78. package/dist/components/Table3/listeners/useTableEditingListener.js +2 -1
  79. package/dist/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  80. package/dist/components/Toggletip/Toggletip.cjs +85 -0
  81. package/dist/components/Toggletip/Toggletip.cjs.map +1 -0
  82. package/dist/components/Toggletip/Toggletip.d.ts +13 -0
  83. package/dist/components/Toggletip/Toggletip.js +68 -0
  84. package/dist/components/Toggletip/Toggletip.js.map +1 -0
  85. package/dist/components/Tooltip/Tooltip.cjs +3 -19
  86. package/dist/components/Tooltip/Tooltip.cjs.map +1 -1
  87. package/dist/components/Tooltip/Tooltip.js +3 -19
  88. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  89. package/dist/components/index.d.ts +1 -0
  90. package/dist/index.cjs +3 -0
  91. package/dist/index.cjs.map +1 -1
  92. package/dist/index.js +4 -1
  93. package/dist/index.js.map +1 -1
  94. package/dist/primitives/ArrowTip/ArrowTip.cjs +43 -0
  95. package/dist/primitives/ArrowTip/ArrowTip.cjs.map +1 -0
  96. package/dist/primitives/ArrowTip/ArrowTip.d.ts +10 -0
  97. package/dist/primitives/ArrowTip/ArrowTip.js +26 -0
  98. package/dist/primitives/ArrowTip/ArrowTip.js.map +1 -0
  99. package/dist/primitives/BareButton/BareButton.cjs +28 -0
  100. package/dist/primitives/BareButton/BareButton.cjs.map +1 -0
  101. package/dist/primitives/BareButton/BareButton.d.ts +7 -0
  102. package/dist/primitives/BareButton/BareButton.js +11 -0
  103. package/dist/primitives/BareButton/BareButton.js.map +1 -0
  104. package/dist/primitives/Table/Core/components/Body/Body.cjs +5 -5
  105. package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
  106. package/dist/primitives/Table/Core/components/Body/Body.js +6 -6
  107. package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
  108. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs +2 -2
  109. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs.map +1 -1
  110. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js +2 -2
  111. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
  112. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs +2 -1
  113. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs.map +1 -1
  114. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +2 -1
  115. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  116. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +6 -5
  117. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
  118. package/dist/primitives/Table/Core/components/Columns/Cell/util.js +6 -5
  119. package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  120. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs +3 -2
  121. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.cjs.map +1 -1
  122. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js +3 -2
  123. package/dist/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  124. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs +3 -2
  125. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.cjs.map +1 -1
  126. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js +3 -2
  127. package/dist/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  128. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs +3 -2
  129. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.cjs.map +1 -1
  130. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js +3 -2
  131. package/dist/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  132. package/dist/primitives/Table/Core/components/Footer/Footer.cjs +3 -2
  133. package/dist/primitives/Table/Core/components/Footer/Footer.cjs.map +1 -1
  134. package/dist/primitives/Table/Core/components/Footer/Footer.js +3 -2
  135. package/dist/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
  136. package/dist/primitives/Table/Core/components/Footer/Summary.cjs +2 -1
  137. package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
  138. package/dist/primitives/Table/Core/components/Footer/Summary.js +2 -1
  139. package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  140. package/dist/primitives/Table/Core/components/Header/Header.cjs +9 -8
  141. package/dist/primitives/Table/Core/components/Header/Header.cjs.map +1 -1
  142. package/dist/primitives/Table/Core/components/Header/Header.js +9 -8
  143. package/dist/primitives/Table/Core/components/Header/Header.js.map +1 -1
  144. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs +6 -5
  145. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.cjs.map +1 -1
  146. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +2 -1
  147. package/dist/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  148. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.cjs +3 -2
  149. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.cjs.map +1 -1
  150. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +3 -2
  151. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  152. package/dist/primitives/Table/Core/components/Row/Row.cjs +2 -2
  153. package/dist/primitives/Table/Core/components/Row/Row.cjs.map +1 -1
  154. package/dist/primitives/Table/Core/components/Row/Row.js +2 -2
  155. package/dist/primitives/Table/Core/components/Row/Row.js.map +1 -1
  156. package/dist/primitives/Table/Core/components/Toolbar/Toolbar.cjs +2 -1
  157. package/dist/primitives/Table/Core/components/Toolbar/Toolbar.cjs.map +1 -1
  158. package/dist/primitives/Table/Core/components/Toolbar/Toolbar.js +2 -1
  159. package/dist/primitives/Table/Core/components/Toolbar/Toolbar.js.map +1 -1
  160. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +2 -1
  161. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
  162. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +2 -1
  163. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  164. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.cjs +6 -6
  165. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.cjs.map +1 -1
  166. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.js +6 -6
  167. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/util.js.map +1 -1
  168. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +2 -1
  169. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
  170. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +2 -1
  171. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  172. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs +2 -1
  173. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.cjs.map +1 -1
  174. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js +2 -1
  175. package/dist/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  176. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs +2 -1
  177. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.cjs.map +1 -1
  178. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js +2 -1
  179. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
  180. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs +2 -1
  181. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.cjs.map +1 -1
  182. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js +2 -1
  183. package/dist/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js.map +1 -1
  184. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs +1 -1
  185. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.cjs.map +1 -1
  186. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
  187. package/dist/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  188. package/dist/primitives/Table/Core/features/useTableRef.cjs +3 -2
  189. package/dist/primitives/Table/Core/features/useTableRef.cjs.map +1 -1
  190. package/dist/primitives/Table/Core/features/useTableRef.js +3 -2
  191. package/dist/primitives/Table/Core/features/useTableRef.js.map +1 -1
  192. package/dist/primitives/Table/Core/features/useTableRenderer.cjs +13 -12
  193. package/dist/primitives/Table/Core/features/useTableRenderer.cjs.map +1 -1
  194. package/dist/primitives/Table/Core/features/useTableRenderer.js +3 -2
  195. package/dist/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  196. package/dist/primitives/Table/Core/features/useTableStyle.cjs +2 -1
  197. package/dist/primitives/Table/Core/features/useTableStyle.cjs.map +1 -1
  198. package/dist/primitives/Table/Core/features/useTableStyle.d.ts +857 -857
  199. package/dist/primitives/Table/Core/features/useTableStyle.js +2 -1
  200. package/dist/primitives/Table/Core/features/useTableStyle.js.map +1 -1
  201. package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs +2 -1
  202. package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs.map +1 -1
  203. package/dist/primitives/Table/Core/features/useTableStyleGrid.js +2 -1
  204. package/dist/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  205. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs +2 -1
  206. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
  207. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js +2 -1
  208. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
  209. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs +5 -5
  210. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs.map +1 -1
  211. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js +2 -2
  212. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
  213. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs +2 -1
  214. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.cjs.map +1 -1
  215. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js +2 -1
  216. package/dist/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  217. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs +2 -1
  218. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.cjs.map +1 -1
  219. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +2 -1
  220. package/dist/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  221. package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.cjs +4 -3
  222. package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.cjs.map +1 -1
  223. package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.js +2 -1
  224. package/dist/primitives/Table/useTableManager/listeners/useTableRowActiveListener.js.map +1 -1
  225. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs +2 -1
  226. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.cjs.map +1 -1
  227. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js +2 -1
  228. package/dist/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -1
  229. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs +4 -4
  230. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.cjs.map +1 -1
  231. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +2 -2
  232. package/dist/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  233. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs +2 -1
  234. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.cjs.map +1 -1
  235. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js +2 -1
  236. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  237. package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.cjs +2 -1
  238. package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.cjs.map +1 -1
  239. package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +2 -1
  240. package/dist/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  241. package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.cjs +2 -1
  242. package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.cjs.map +1 -1
  243. package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.js +2 -1
  244. package/dist/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -1
  245. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs +5 -4
  246. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.cjs.map +1 -1
  247. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js +2 -1
  248. package/dist/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -1
  249. package/dist/primitives/Table/useTableManager/useTableManager.cjs +3 -1
  250. package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
  251. package/dist/primitives/Table/useTableManager/useTableManager.js +3 -1
  252. package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  253. package/dist/primitives/Table/useTableManager/util/rows.cjs +8 -1
  254. package/dist/primitives/Table/useTableManager/util/rows.cjs.map +1 -1
  255. package/dist/primitives/Table/useTableManager/util/rows.d.ts +2 -1
  256. package/dist/primitives/Table/useTableManager/util/rows.js +9 -2
  257. package/dist/primitives/Table/useTableManager/util/rows.js.map +1 -1
  258. package/dist/primitives/Table/useTableManager/util/search.cjs +2 -1
  259. package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
  260. package/dist/primitives/Table/useTableManager/util/search.js +2 -1
  261. package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
  262. package/dist/primitives/Table/useTableManager/util/settings.cjs +2 -1
  263. package/dist/primitives/Table/useTableManager/util/settings.cjs.map +1 -1
  264. package/dist/primitives/Table/useTableManager/util/settings.js +2 -1
  265. package/dist/primitives/Table/useTableManager/util/settings.js.map +1 -1
  266. package/dist/utils/tailwind.cjs +4 -0
  267. package/dist/utils/tailwind.cjs.map +1 -1
  268. package/dist/utils/tailwind.d.ts +4 -0
  269. package/dist/utils/tailwind.js +4 -0
  270. package/dist/utils/tailwind.js.map +1 -1
  271. package/package.json +6 -6
  272. package/dist/components/Popover/Primitives.cjs +0 -44
  273. package/dist/components/Popover/Primitives.cjs.map +0 -1
  274. package/dist/components/Popover/Primitives.d.ts +0 -2
  275. package/dist/components/Popover/Primitives.js +0 -27
  276. package/dist/components/Popover/Primitives.js.map +0 -1
  277. /package/dist/components/Icon/config/{index-template.d.cts → index-template.d.ts} +0 -0
  278. /package/dist/components/Icon/config/{svgr.config.d.cts → svgr.config.d.ts} +0 -0
  279. /package/dist/components/Icon/config/{template.d.cts → template.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Row.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Row/Row.tsx"],"sourcesContent":["import type { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRowRenderer, TableRowRendererProps } from '../../types';\n\nimport { RowContext } from './RowContext';\n\nexport type RowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n renderer: TableRowRenderer<TType>;\n };\n\n/* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const {\n renderer: RowRenderer,\n cellRenderer: CellRenderer,\n hideInternalColumns = false,\n hideRowActions = false,\n ...displayRowProps\n } = props;\n\n const tableMeta = props.table.options.meta as ReactTableMeta<TType>;\n const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;\n // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow\n const contextValue = React.useMemo(\n () => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),\n [isHovered, props.index, hideInternalColumns, hideRowActions]\n );\n\n return (\n <RowContext.Provider value={contextValue}>\n <RowRenderer<TType> {...displayRowProps} cellRenderer={CellRenderer} />\n </RowContext.Provider>\n );\n}\n"],"names":["RowContext"],"mappings":";;;;AAaO,SAAS,IAAqB,OAAwB;AACzD,QAAM;AAAA,IACF,UAAU;AAAA,IACV,cAAc;AAAA,IACd,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA,IACH;AAEJ,QAAM,YAAY,MAAM,MAAM,QAAQ;AACtC,QAAM,YAAY,UAAU,UAAU,kBAAkB,MAAM;AAE9D,QAAM,eAAe,MAAM;AAAA,IACvB,OAAO,EAAE,WAAW,UAAU,MAAM,OAAO,qBAAqB;IAChE,CAAC,WAAW,MAAM,OAAO,qBAAqB,cAAc;AAAA,EAAA;AAGhE,SACI,sBAAA,cAACA,WAAAA,WAAW,UAAX,EAAoB,OAAO,aAAA,GACxB,sBAAA,cAAC,aAAA,EAAoB,GAAG,iBAAiB,cAAc,aAAA,CAAc,CACzE;AAER;;"}
1
+ {"version":3,"file":"Row.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Row/Row.tsx"],"sourcesContent":["import React from 'react';\n\nimport { getTableMeta } from '../../../useTableManager/util/rows';\nimport type { TableRowRenderer, TableRowRendererProps } from '../../types';\n\nimport { RowContext } from './RowContext';\n\nexport type RowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n renderer: TableRowRenderer<TType>;\n };\n\n/* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const {\n renderer: RowRenderer,\n cellRenderer: CellRenderer,\n hideInternalColumns = false,\n hideRowActions = false,\n ...displayRowProps\n } = props;\n\n const isHovered = getTableMeta(props.table).rowActive.rowHoverIndex === props.index;\n // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow\n const contextValue = React.useMemo(\n () => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),\n [isHovered, props.index, hideInternalColumns, hideRowActions]\n );\n\n return (\n <RowContext.Provider value={contextValue}>\n <RowRenderer<TType> {...displayRowProps} cellRenderer={CellRenderer} />\n </RowContext.Provider>\n );\n}\n"],"names":["getTableMeta","RowContext"],"mappings":";;;;;AAaO,SAAS,IAAqB,OAAwB;AACzD,QAAM;AAAA,IACF,UAAU;AAAA,IACV,cAAc;AAAA,IACd,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA,IACH;AAEJ,QAAM,YAAYA,KAAAA,aAAa,MAAM,KAAK,EAAE,UAAU,kBAAkB,MAAM;AAE9E,QAAM,eAAe,MAAM;AAAA,IACvB,OAAO,EAAE,WAAW,UAAU,MAAM,OAAO,qBAAqB;IAChE,CAAC,WAAW,MAAM,OAAO,qBAAqB,cAAc;AAAA,EAAA;AAGhE,SACI,sBAAA,cAACC,WAAAA,WAAW,UAAX,EAAoB,OAAO,aAAA,GACxB,sBAAA,cAAC,aAAA,EAAoB,GAAG,iBAAiB,cAAc,aAAA,CAAc,CACzE;AAER;;"}
@@ -1,4 +1,5 @@
1
1
  import React__default from "react";
2
+ import { getTableMeta } from "../../../useTableManager/util/rows.js";
2
3
  import { RowContext } from "./RowContext.js";
3
4
  function Row(props) {
4
5
  const {
@@ -8,8 +9,7 @@ function Row(props) {
8
9
  hideRowActions = false,
9
10
  ...displayRowProps
10
11
  } = props;
11
- const tableMeta = props.table.options.meta;
12
- const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;
12
+ const isHovered = getTableMeta(props.table).rowActive.rowHoverIndex === props.index;
13
13
  const contextValue = React__default.useMemo(
14
14
  () => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),
15
15
  [isHovered, props.index, hideInternalColumns, hideRowActions]
@@ -1 +1 @@
1
- {"version":3,"file":"Row.js","sources":["../../../../../../src/primitives/Table/Core/components/Row/Row.tsx"],"sourcesContent":["import type { TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRowRenderer, TableRowRendererProps } from '../../types';\n\nimport { RowContext } from './RowContext';\n\nexport type RowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n renderer: TableRowRenderer<TType>;\n };\n\n/* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const {\n renderer: RowRenderer,\n cellRenderer: CellRenderer,\n hideInternalColumns = false,\n hideRowActions = false,\n ...displayRowProps\n } = props;\n\n const tableMeta = props.table.options.meta as ReactTableMeta<TType>;\n const isHovered = tableMeta.rowActive.rowHoverIndex === props.index;\n // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow\n const contextValue = React.useMemo(\n () => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),\n [isHovered, props.index, hideInternalColumns, hideRowActions]\n );\n\n return (\n <RowContext.Provider value={contextValue}>\n <RowRenderer<TType> {...displayRowProps} cellRenderer={CellRenderer} />\n </RowContext.Provider>\n );\n}\n"],"names":["React"],"mappings":";;AAaO,SAAS,IAAqB,OAAwB;AACzD,QAAM;AAAA,IACF,UAAU;AAAA,IACV,cAAc;AAAA,IACd,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA,IACH;AAEJ,QAAM,YAAY,MAAM,MAAM,QAAQ;AACtC,QAAM,YAAY,UAAU,UAAU,kBAAkB,MAAM;AAE9D,QAAM,eAAeA,eAAM;AAAA,IACvB,OAAO,EAAE,WAAW,UAAU,MAAM,OAAO,qBAAqB;IAChE,CAAC,WAAW,MAAM,OAAO,qBAAqB,cAAc;AAAA,EAAA;AAGhE,SACIA,+BAAA,cAAC,WAAW,UAAX,EAAoB,OAAO,aAAA,GACxBA,+BAAA,cAAC,aAAA,EAAoB,GAAG,iBAAiB,cAAc,aAAA,CAAc,CACzE;AAER;"}
1
+ {"version":3,"file":"Row.js","sources":["../../../../../../src/primitives/Table/Core/components/Row/Row.tsx"],"sourcesContent":["import React from 'react';\n\nimport { getTableMeta } from '../../../useTableManager/util/rows';\nimport type { TableRowRenderer, TableRowRendererProps } from '../../types';\n\nimport { RowContext } from './RowContext';\n\nexport type RowProps<TType = unknown> = React.HTMLAttributes<HTMLTableRowElement> &\n TableRowRendererProps<TType> & {\n renderer: TableRowRenderer<TType>;\n };\n\n/* anonymous functions will break the memoisation on each render, wrap handlers in callbacks */\nexport function Row<TType = unknown>(props: RowProps<TType>) {\n const {\n renderer: RowRenderer,\n cellRenderer: CellRenderer,\n hideInternalColumns = false,\n hideRowActions = false,\n ...displayRowProps\n } = props;\n\n const isHovered = getTableMeta(props.table).rowActive.rowHoverIndex === props.index;\n // context - it must be here for cells to read it, since they render alongside the row inside DisplayRow\n const contextValue = React.useMemo(\n () => ({ isHovered, rowIndex: props.index, hideInternalColumns, hideRowActions }),\n [isHovered, props.index, hideInternalColumns, hideRowActions]\n );\n\n return (\n <RowContext.Provider value={contextValue}>\n <RowRenderer<TType> {...displayRowProps} cellRenderer={CellRenderer} />\n </RowContext.Provider>\n );\n}\n"],"names":["React"],"mappings":";;;AAaO,SAAS,IAAqB,OAAwB;AACzD,QAAM;AAAA,IACF,UAAU;AAAA,IACV,cAAc;AAAA,IACd,sBAAsB;AAAA,IACtB,iBAAiB;AAAA,IACjB,GAAG;AAAA,EAAA,IACH;AAEJ,QAAM,YAAY,aAAa,MAAM,KAAK,EAAE,UAAU,kBAAkB,MAAM;AAE9E,QAAM,eAAeA,eAAM;AAAA,IACvB,OAAO,EAAE,WAAW,UAAU,MAAM,OAAO,qBAAqB;IAChE,CAAC,WAAW,MAAM,OAAO,qBAAqB,cAAc;AAAA,EAAA;AAGhE,SACIA,+BAAA,cAAC,WAAW,UAAX,EAAoB,OAAO,aAAA,GACxBA,+BAAA,cAAC,aAAA,EAAoB,GAAG,iBAAiB,cAAc,aAAA,CAAc,CACzE;AAER;"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
+ const rows = require("../../../useTableManager/util/rows.cjs");
4
5
  const Filters = require("./components/Filters/Filters.cjs");
5
6
  const Print = require("./components/Print/Print.cjs");
6
7
  const Search = require("./components/Search/Search.cjs");
@@ -28,7 +29,7 @@ function TableToolbar(props) {
28
29
  ), table.props.toolbarPanel ? /* @__PURE__ */ React.createElement("div", { className: "mb-4" }, table.props.toolbarPanel) : void 0);
29
30
  }
30
31
  function canChangeSettings(table, customSettings) {
31
- const tableMeta = table.options.meta;
32
+ const tableMeta = rows.getTableMeta(table);
32
33
  return table.options.enableHiding || tableMeta.columnOrdering.isEnabled || tableMeta.fontSize.isEnabled || tableMeta.rowHeight.isEnabled || typeof customSettings === "function";
33
34
  }
34
35
  function isToolbarVisible(table, customTools) {
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableCustomSettingsRenderer } from '../../../types';\nimport type { useTableReturnValue } from '../../useTable';\n\nimport { Filters } from './components/Filters/Filters';\nimport { Print } from './components/Print/Print';\nimport { Search } from './components/Search/Search';\nimport { Settings } from './components/Settings/Settings';\n\nexport type TableToolbarProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.JSX.Element | null;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableToolbar<TType = unknown>(props: TableToolbarProps<TType>) {\n const { children: customTools, table, ...attributes } = props;\n\n if (!isToolbarVisible<TType>(table, !!customTools)) {\n return null;\n }\n\n const canFilter = table.instance.options.enableColumnFilters;\n const canPrint = table.meta.printing.isEnabled;\n const canSettings = canChangeSettings(table.instance, table.props.customSettings);\n const canSearch = table.meta.search.isEnabled;\n\n const id = `${table.id}-toolbar`;\n\n return (\n <>\n <div\n {...attributes}\n id={id}\n className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 print:hidden\"\n data-taco=\"table-toolbar\">\n {table.props.toolbarLeft}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 print:hidden\">\n {customTools}\n {canFilter ? <Filters length={table.meta.length} tableId={table.id} table={table.instance} /> : null}\n {table.props.toolbarRight}\n {canPrint ? <Print table={table.instance} tableId={table.id} tableRef={table.ref} /> : null}\n {canSettings ? (\n <Settings customSettings={table.props.customSettings} id={`${id}-settings`} table={table.instance} />\n ) : null}\n {canSearch ? (\n <Search scrollToIndex={table.renderer.scrollToIndex} table={table.instance} tableRef={table.ref} />\n ) : null}\n </div>\n </div>\n {table.props.toolbarPanel ? <div className=\"mb-4\">{table.props.toolbarPanel}</div> : undefined}\n </>\n );\n}\n\nfunction canChangeSettings<TType = unknown>(table: ReactTable<TType>, customSettings?: TableCustomSettingsRenderer) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n return (\n table.options.enableHiding ||\n tableMeta.columnOrdering.isEnabled ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n typeof customSettings === 'function'\n );\n}\n\nfunction isToolbarVisible<TType = unknown>(table: useTableReturnValue<TType>, customTools: boolean) {\n const hasInternalToolbar =\n customTools ||\n table.instance.options.enableColumnFilters ||\n table.meta.printing.isEnabled ||\n canChangeSettings(table.instance, table.props.customSettings) ||\n table.meta.search.isEnabled;\n\n return hasInternalToolbar || !!table.props.toolbarLeft || !!table.props.toolbarRight;\n}\n"],"names":["Filters","Print","Settings","Search"],"mappings":";;;;;;;AAgBO,SAAS,aAA8B,OAAiC;AAC3E,QAAM,EAAE,UAAU,aAAa,OAAO,GAAG,eAAe;AAExD,MAAI,CAAC,iBAAwB,OAAO,CAAC,CAAC,WAAW,GAAG;AAChD,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,MAAM,SAAS,QAAQ;AACzC,QAAM,WAAW,MAAM,KAAK,SAAS;AACrC,QAAM,cAAc,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc;AAChF,QAAM,YAAY,MAAM,KAAK,OAAO;AAEpC,QAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,SACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ;AAAA,MACA,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT,MAAM,MAAM;AAAA,IACb,sBAAA,cAAC,OAAA,EAAI,WAAU,6DAAA,GACV,aACA,YAAY,sBAAA,cAACA,QAAAA,SAAA,EAAQ,QAAQ,MAAM,KAAK,QAAQ,SAAS,MAAM,IAAI,OAAO,MAAM,UAAU,IAAK,MAC/F,MAAM,MAAM,cACZ,WAAW,sBAAA,cAACC,MAAAA,OAAA,EAAM,OAAO,MAAM,UAAU,SAAS,MAAM,IAAI,UAAU,MAAM,IAAA,CAAK,IAAK,MACtF,cACG,sBAAA,cAACC,SAAAA,YAAS,gBAAgB,MAAM,MAAM,gBAAgB,IAAI,GAAG,EAAE,aAAa,OAAO,MAAM,SAAA,CAAU,IACnG,MACH,YACG,sBAAA,cAACC,OAAAA,QAAA,EAAO,eAAe,MAAM,SAAS,eAAe,OAAO,MAAM,UAAU,UAAU,MAAM,IAAA,CAAK,IACjG,IACR;AAAA,EAAA,GAEH,MAAM,MAAM,eAAe,sBAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQ,MAAM,MAAM,YAAa,IAAS,MACzF;AAER;AAEA,SAAS,kBAAmC,OAA0B,gBAA8C;AAChH,QAAM,YAAY,MAAM,QAAQ;AAEhC,SACI,MAAM,QAAQ,gBACd,UAAU,eAAe,aACzB,UAAU,SAAS,aACnB,UAAU,UAAU,aACpB,OAAO,mBAAmB;AAElC;AAEA,SAAS,iBAAkC,OAAmC,aAAsB;AAChG,QAAM,qBACF,eACA,MAAM,SAAS,QAAQ,uBACvB,MAAM,KAAK,SAAS,aACpB,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc,KAC5D,MAAM,KAAK,OAAO;AAEtB,SAAO,sBAAsB,CAAC,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC,MAAM,MAAM;AAC5E;;"}
1
+ {"version":3,"file":"Toolbar.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableCustomSettingsRenderer } from '../../../types';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\nimport type { useTableReturnValue } from '../../useTable';\n\nimport { Filters } from './components/Filters/Filters';\nimport { Print } from './components/Print/Print';\nimport { Search } from './components/Search/Search';\nimport { Settings } from './components/Settings/Settings';\n\nexport type TableToolbarProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.JSX.Element | null;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableToolbar<TType = unknown>(props: TableToolbarProps<TType>) {\n const { children: customTools, table, ...attributes } = props;\n\n if (!isToolbarVisible<TType>(table, !!customTools)) {\n return null;\n }\n\n const canFilter = table.instance.options.enableColumnFilters;\n const canPrint = table.meta.printing.isEnabled;\n const canSettings = canChangeSettings(table.instance, table.props.customSettings);\n const canSearch = table.meta.search.isEnabled;\n\n const id = `${table.id}-toolbar`;\n\n return (\n <>\n <div\n {...attributes}\n id={id}\n className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 print:hidden\"\n data-taco=\"table-toolbar\">\n {table.props.toolbarLeft}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 print:hidden\">\n {customTools}\n {canFilter ? <Filters length={table.meta.length} tableId={table.id} table={table.instance} /> : null}\n {table.props.toolbarRight}\n {canPrint ? <Print table={table.instance} tableId={table.id} tableRef={table.ref} /> : null}\n {canSettings ? (\n <Settings customSettings={table.props.customSettings} id={`${id}-settings`} table={table.instance} />\n ) : null}\n {canSearch ? (\n <Search scrollToIndex={table.renderer.scrollToIndex} table={table.instance} tableRef={table.ref} />\n ) : null}\n </div>\n </div>\n {table.props.toolbarPanel ? <div className=\"mb-4\">{table.props.toolbarPanel}</div> : undefined}\n </>\n );\n}\n\nfunction canChangeSettings<TType = unknown>(table: ReactTable<TType>, customSettings?: TableCustomSettingsRenderer) {\n const tableMeta = getTableMeta(table);\n\n return (\n table.options.enableHiding ||\n tableMeta.columnOrdering.isEnabled ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n typeof customSettings === 'function'\n );\n}\n\nfunction isToolbarVisible<TType = unknown>(table: useTableReturnValue<TType>, customTools: boolean) {\n const hasInternalToolbar =\n customTools ||\n table.instance.options.enableColumnFilters ||\n table.meta.printing.isEnabled ||\n canChangeSettings(table.instance, table.props.customSettings) ||\n table.meta.search.isEnabled;\n\n return hasInternalToolbar || !!table.props.toolbarLeft || !!table.props.toolbarRight;\n}\n"],"names":["Filters","Print","Settings","Search","getTableMeta"],"mappings":";;;;;;;;AAiBO,SAAS,aAA8B,OAAiC;AAC3E,QAAM,EAAE,UAAU,aAAa,OAAO,GAAG,eAAe;AAExD,MAAI,CAAC,iBAAwB,OAAO,CAAC,CAAC,WAAW,GAAG;AAChD,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,MAAM,SAAS,QAAQ;AACzC,QAAM,WAAW,MAAM,KAAK,SAAS;AACrC,QAAM,cAAc,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc;AAChF,QAAM,YAAY,MAAM,KAAK,OAAO;AAEpC,QAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,SACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ;AAAA,MACA,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT,MAAM,MAAM;AAAA,IACb,sBAAA,cAAC,OAAA,EAAI,WAAU,6DAAA,GACV,aACA,YAAY,sBAAA,cAACA,QAAAA,SAAA,EAAQ,QAAQ,MAAM,KAAK,QAAQ,SAAS,MAAM,IAAI,OAAO,MAAM,UAAU,IAAK,MAC/F,MAAM,MAAM,cACZ,WAAW,sBAAA,cAACC,MAAAA,OAAA,EAAM,OAAO,MAAM,UAAU,SAAS,MAAM,IAAI,UAAU,MAAM,IAAA,CAAK,IAAK,MACtF,cACG,sBAAA,cAACC,SAAAA,YAAS,gBAAgB,MAAM,MAAM,gBAAgB,IAAI,GAAG,EAAE,aAAa,OAAO,MAAM,SAAA,CAAU,IACnG,MACH,YACG,sBAAA,cAACC,OAAAA,QAAA,EAAO,eAAe,MAAM,SAAS,eAAe,OAAO,MAAM,UAAU,UAAU,MAAM,IAAA,CAAK,IACjG,IACR;AAAA,EAAA,GAEH,MAAM,MAAM,eAAe,sBAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQ,MAAM,MAAM,YAAa,IAAS,MACzF;AAER;AAEA,SAAS,kBAAmC,OAA0B,gBAA8C;AAChH,QAAM,YAAYC,KAAAA,aAAa,KAAK;AAEpC,SACI,MAAM,QAAQ,gBACd,UAAU,eAAe,aACzB,UAAU,SAAS,aACnB,UAAU,UAAU,aACpB,OAAO,mBAAmB;AAElC;AAEA,SAAS,iBAAkC,OAAmC,aAAsB;AAChG,QAAM,qBACF,eACA,MAAM,SAAS,QAAQ,uBACvB,MAAM,KAAK,SAAS,aACpB,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc,KAC5D,MAAM,KAAK,OAAO;AAEtB,SAAO,sBAAsB,CAAC,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC,MAAM,MAAM;AAC5E;;"}
@@ -1,4 +1,5 @@
1
1
  import React__default from "react";
2
+ import { getTableMeta } from "../../../useTableManager/util/rows.js";
2
3
  import { Filters } from "./components/Filters/Filters.js";
3
4
  import { Print } from "./components/Print/Print.js";
4
5
  import { Search } from "./components/Search/Search.js";
@@ -26,7 +27,7 @@ function TableToolbar(props) {
26
27
  ), table.props.toolbarPanel ? /* @__PURE__ */ React__default.createElement("div", { className: "mb-4" }, table.props.toolbarPanel) : void 0);
27
28
  }
28
29
  function canChangeSettings(table, customSettings) {
29
- const tableMeta = table.options.meta;
30
+ const tableMeta = getTableMeta(table);
30
31
  return table.options.enableHiding || tableMeta.columnOrdering.isEnabled || tableMeta.fontSize.isEnabled || tableMeta.rowHeight.isEnabled || typeof customSettings === "function";
31
32
  }
32
33
  function isToolbarVisible(table, customTools) {
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sources":["../../../../../../src/primitives/Table/Core/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableCustomSettingsRenderer } from '../../../types';\nimport type { useTableReturnValue } from '../../useTable';\n\nimport { Filters } from './components/Filters/Filters';\nimport { Print } from './components/Print/Print';\nimport { Search } from './components/Search/Search';\nimport { Settings } from './components/Settings/Settings';\n\nexport type TableToolbarProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.JSX.Element | null;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableToolbar<TType = unknown>(props: TableToolbarProps<TType>) {\n const { children: customTools, table, ...attributes } = props;\n\n if (!isToolbarVisible<TType>(table, !!customTools)) {\n return null;\n }\n\n const canFilter = table.instance.options.enableColumnFilters;\n const canPrint = table.meta.printing.isEnabled;\n const canSettings = canChangeSettings(table.instance, table.props.customSettings);\n const canSearch = table.meta.search.isEnabled;\n\n const id = `${table.id}-toolbar`;\n\n return (\n <>\n <div\n {...attributes}\n id={id}\n className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 print:hidden\"\n data-taco=\"table-toolbar\">\n {table.props.toolbarLeft}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 print:hidden\">\n {customTools}\n {canFilter ? <Filters length={table.meta.length} tableId={table.id} table={table.instance} /> : null}\n {table.props.toolbarRight}\n {canPrint ? <Print table={table.instance} tableId={table.id} tableRef={table.ref} /> : null}\n {canSettings ? (\n <Settings customSettings={table.props.customSettings} id={`${id}-settings`} table={table.instance} />\n ) : null}\n {canSearch ? (\n <Search scrollToIndex={table.renderer.scrollToIndex} table={table.instance} tableRef={table.ref} />\n ) : null}\n </div>\n </div>\n {table.props.toolbarPanel ? <div className=\"mb-4\">{table.props.toolbarPanel}</div> : undefined}\n </>\n );\n}\n\nfunction canChangeSettings<TType = unknown>(table: ReactTable<TType>, customSettings?: TableCustomSettingsRenderer) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n return (\n table.options.enableHiding ||\n tableMeta.columnOrdering.isEnabled ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n typeof customSettings === 'function'\n );\n}\n\nfunction isToolbarVisible<TType = unknown>(table: useTableReturnValue<TType>, customTools: boolean) {\n const hasInternalToolbar =\n customTools ||\n table.instance.options.enableColumnFilters ||\n table.meta.printing.isEnabled ||\n canChangeSettings(table.instance, table.props.customSettings) ||\n table.meta.search.isEnabled;\n\n return hasInternalToolbar || !!table.props.toolbarLeft || !!table.props.toolbarRight;\n}\n"],"names":["React"],"mappings":";;;;;AAgBO,SAAS,aAA8B,OAAiC;AAC3E,QAAM,EAAE,UAAU,aAAa,OAAO,GAAG,eAAe;AAExD,MAAI,CAAC,iBAAwB,OAAO,CAAC,CAAC,WAAW,GAAG;AAChD,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,MAAM,SAAS,QAAQ;AACzC,QAAM,WAAW,MAAM,KAAK,SAAS;AACrC,QAAM,cAAc,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc;AAChF,QAAM,YAAY,MAAM,KAAK,OAAO;AAEpC,QAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,SACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ;AAAA,MACA,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT,MAAM,MAAM;AAAA,IACbA,+BAAA,cAAC,OAAA,EAAI,WAAU,6DAAA,GACV,aACA,YAAYA,+BAAA,cAAC,SAAA,EAAQ,QAAQ,MAAM,KAAK,QAAQ,SAAS,MAAM,IAAI,OAAO,MAAM,UAAU,IAAK,MAC/F,MAAM,MAAM,cACZ,WAAWA,+BAAA,cAAC,OAAA,EAAM,OAAO,MAAM,UAAU,SAAS,MAAM,IAAI,UAAU,MAAM,IAAA,CAAK,IAAK,MACtF,cACGA,+BAAA,cAAC,YAAS,gBAAgB,MAAM,MAAM,gBAAgB,IAAI,GAAG,EAAE,aAAa,OAAO,MAAM,SAAA,CAAU,IACnG,MACH,YACGA,+BAAA,cAAC,QAAA,EAAO,eAAe,MAAM,SAAS,eAAe,OAAO,MAAM,UAAU,UAAU,MAAM,IAAA,CAAK,IACjG,IACR;AAAA,EAAA,GAEH,MAAM,MAAM,eAAeA,+BAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQ,MAAM,MAAM,YAAa,IAAS,MACzF;AAER;AAEA,SAAS,kBAAmC,OAA0B,gBAA8C;AAChH,QAAM,YAAY,MAAM,QAAQ;AAEhC,SACI,MAAM,QAAQ,gBACd,UAAU,eAAe,aACzB,UAAU,SAAS,aACnB,UAAU,UAAU,aACpB,OAAO,mBAAmB;AAElC;AAEA,SAAS,iBAAkC,OAAmC,aAAsB;AAChG,QAAM,qBACF,eACA,MAAM,SAAS,QAAQ,uBACvB,MAAM,KAAK,SAAS,aACpB,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc,KAC5D,MAAM,KAAK,OAAO;AAEtB,SAAO,sBAAsB,CAAC,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC,MAAM,MAAM;AAC5E;"}
1
+ {"version":3,"file":"Toolbar.js","sources":["../../../../../../src/primitives/Table/Core/components/Toolbar/Toolbar.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableCustomSettingsRenderer } from '../../../types';\nimport { getTableMeta } from '../../../useTableManager/util/rows';\nimport type { useTableReturnValue } from '../../useTable';\n\nimport { Filters } from './components/Filters/Filters';\nimport { Print } from './components/Print/Print';\nimport { Search } from './components/Search/Search';\nimport { Settings } from './components/Settings/Settings';\n\nexport type TableToolbarProps<TType = unknown> = React.HTMLAttributes<HTMLDivElement> & {\n children?: React.JSX.Element | null;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableToolbar<TType = unknown>(props: TableToolbarProps<TType>) {\n const { children: customTools, table, ...attributes } = props;\n\n if (!isToolbarVisible<TType>(table, !!customTools)) {\n return null;\n }\n\n const canFilter = table.instance.options.enableColumnFilters;\n const canPrint = table.meta.printing.isEnabled;\n const canSettings = canChangeSettings(table.instance, table.props.customSettings);\n const canSearch = table.meta.search.isEnabled;\n\n const id = `${table.id}-toolbar`;\n\n return (\n <>\n <div\n {...attributes}\n id={id}\n className=\"mb-4 flex flex-shrink flex-grow-0 flex-wrap gap-2 print:hidden\"\n data-taco=\"table-toolbar\">\n {table.props.toolbarLeft}\n <div className=\"ml-auto flex flex-shrink-0 items-center gap-2 print:hidden\">\n {customTools}\n {canFilter ? <Filters length={table.meta.length} tableId={table.id} table={table.instance} /> : null}\n {table.props.toolbarRight}\n {canPrint ? <Print table={table.instance} tableId={table.id} tableRef={table.ref} /> : null}\n {canSettings ? (\n <Settings customSettings={table.props.customSettings} id={`${id}-settings`} table={table.instance} />\n ) : null}\n {canSearch ? (\n <Search scrollToIndex={table.renderer.scrollToIndex} table={table.instance} tableRef={table.ref} />\n ) : null}\n </div>\n </div>\n {table.props.toolbarPanel ? <div className=\"mb-4\">{table.props.toolbarPanel}</div> : undefined}\n </>\n );\n}\n\nfunction canChangeSettings<TType = unknown>(table: ReactTable<TType>, customSettings?: TableCustomSettingsRenderer) {\n const tableMeta = getTableMeta(table);\n\n return (\n table.options.enableHiding ||\n tableMeta.columnOrdering.isEnabled ||\n tableMeta.fontSize.isEnabled ||\n tableMeta.rowHeight.isEnabled ||\n typeof customSettings === 'function'\n );\n}\n\nfunction isToolbarVisible<TType = unknown>(table: useTableReturnValue<TType>, customTools: boolean) {\n const hasInternalToolbar =\n customTools ||\n table.instance.options.enableColumnFilters ||\n table.meta.printing.isEnabled ||\n canChangeSettings(table.instance, table.props.customSettings) ||\n table.meta.search.isEnabled;\n\n return hasInternalToolbar || !!table.props.toolbarLeft || !!table.props.toolbarRight;\n}\n"],"names":["React"],"mappings":";;;;;;AAiBO,SAAS,aAA8B,OAAiC;AAC3E,QAAM,EAAE,UAAU,aAAa,OAAO,GAAG,eAAe;AAExD,MAAI,CAAC,iBAAwB,OAAO,CAAC,CAAC,WAAW,GAAG;AAChD,WAAO;AAAA,EACX;AAEA,QAAM,YAAY,MAAM,SAAS,QAAQ;AACzC,QAAM,WAAW,MAAM,KAAK,SAAS;AACrC,QAAM,cAAc,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc;AAChF,QAAM,YAAY,MAAM,KAAK,OAAO;AAEpC,QAAM,KAAK,GAAG,MAAM,EAAE;AAEtB,SACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAG;AAAA,MACJ;AAAA,MACA,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT,MAAM,MAAM;AAAA,IACbA,+BAAA,cAAC,OAAA,EAAI,WAAU,6DAAA,GACV,aACA,YAAYA,+BAAA,cAAC,SAAA,EAAQ,QAAQ,MAAM,KAAK,QAAQ,SAAS,MAAM,IAAI,OAAO,MAAM,UAAU,IAAK,MAC/F,MAAM,MAAM,cACZ,WAAWA,+BAAA,cAAC,OAAA,EAAM,OAAO,MAAM,UAAU,SAAS,MAAM,IAAI,UAAU,MAAM,IAAA,CAAK,IAAK,MACtF,cACGA,+BAAA,cAAC,YAAS,gBAAgB,MAAM,MAAM,gBAAgB,IAAI,GAAG,EAAE,aAAa,OAAO,MAAM,SAAA,CAAU,IACnG,MACH,YACGA,+BAAA,cAAC,QAAA,EAAO,eAAe,MAAM,SAAS,eAAe,OAAO,MAAM,UAAU,UAAU,MAAM,IAAA,CAAK,IACjG,IACR;AAAA,EAAA,GAEH,MAAM,MAAM,eAAeA,+BAAA,cAAC,OAAA,EAAI,WAAU,OAAA,GAAQ,MAAM,MAAM,YAAa,IAAS,MACzF;AAER;AAEA,SAAS,kBAAmC,OAA0B,gBAA8C;AAChH,QAAM,YAAY,aAAa,KAAK;AAEpC,SACI,MAAM,QAAQ,gBACd,UAAU,eAAe,aACzB,UAAU,SAAS,aACnB,UAAU,UAAU,aACpB,OAAO,mBAAmB;AAElC;AAEA,SAAS,iBAAkC,OAAmC,aAAsB;AAChG,QAAM,qBACF,eACA,MAAM,SAAS,QAAQ,uBACvB,MAAM,KAAK,SAAS,aACpB,kBAAkB,MAAM,UAAU,MAAM,MAAM,cAAc,KAC5D,MAAM,KAAK,OAAO;AAEtB,SAAO,sBAAsB,CAAC,CAAC,MAAM,MAAM,eAAe,CAAC,CAAC,MAAM,MAAM;AAC5E;"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const types = require("../../../../../types.cjs");
5
5
  const columns = require("../../../../../useTableManager/util/columns.cjs");
6
+ const rows = require("../../../../../useTableManager/util/rows.cjs");
6
7
  const Filter = require("./components/Filter.cjs");
7
8
  const FilterContext = require("./FilterContext.cjs");
8
9
  const util = require("./util.cjs");
@@ -16,7 +17,7 @@ function ManageFiltersPopover(props) {
16
17
  const { locale, texts } = Localization.useLocalization();
17
18
  const allColumns = table.getAllLeafColumns().filter((column) => !columns.isInternalColumn(column.id)).sort(util.sortByHeader);
18
19
  const columnFilters = table.getState().columnFilters;
19
- const tableMeta = table.options.meta;
20
+ const tableMeta = rows.getTableMeta(table);
20
21
  const [filters, setFilters] = React.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
21
22
  React.useEffect(() => {
22
23
  setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);
@@ -1 +1 @@
1
- {"version":3,"file":"ManageFiltersPopover.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Button, Inline, Popover, useLocalization } from '@/components';\n\nimport type { TableFilter, TableFilterValue } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { isInternalColumn } from '../../../../../useTableManager/util/columns';\n\nimport { Filter } from './components/Filter';\nimport { FilterContext } from './FilterContext';\nimport { isEmptyFilter, sortByHeader } from './util';\n\nexport type ManageFiltersPopoverProps<TType = unknown> = {\n length: number;\n table: ReactTable<TType>;\n};\n\nconst placeholderFilter: TableFilter = { id: '', value: { comparator: TableFilterComparator.Contains, value: undefined } };\n\nexport function ManageFiltersPopover<TType = unknown>(props: ManageFiltersPopoverProps<TType>) {\n const { length, table, ...popoverProps } = props;\n const { locale, texts } = useLocalization();\n\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // state, since we \"apply\" filters - our filter values have a special shape, so we force to our type\n const [filters, setFilters] = React.useState<TableFilter[]>(columnFilters.length ? columnFilters : [placeholderFilter]);\n\n // this runs if filters are set outside (e.g. through column header)\n React.useEffect(() => {\n setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);\n\n // focus the filter value, as we preset the column/comparator.\n requestAnimationFrame(() => {\n const filterValues = document.querySelectorAll('[data-query-selector=\"filter-value\"]');\n const lastFilter = [...filterValues].at(-1);\n\n (lastFilter as HTMLElement)?.focus();\n });\n }, [columnFilters]);\n\n // filters\n const handleChangeFilter = (position: number, filter: { id: string; value: TableFilterValue }) => {\n setFilters(currentFilters => {\n return currentFilters.map((current, index) => {\n if (index === position) {\n return filter;\n }\n return current;\n });\n });\n };\n\n const handleRemoveFilter = (position: number) => {\n if (filters.length === 1) {\n setFilters([placeholderFilter]);\n return;\n }\n\n setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));\n };\n\n const handleCreate = () => {\n setFilters(filters.concat(placeholderFilter));\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null || f.id === '') {\n return false;\n }\n\n const controlRenderer = allColumns.find(column => column.id === f.id)?.columnDef.meta?.control;\n\n if (\n f.value.comparator === TableFilterComparator.IsEmpty ||\n f.value.comparator === TableFilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n\n const value = f.value.value;\n\n return value !== undefined && value !== null && value !== '';\n });\n\n return newFilters;\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([placeholderFilter]);\n };\n\n const handleClose = (open: boolean) => {\n if (!open) {\n const nonEmptyFilters = columnFilters.filter(f => !isEmptyFilter(f));\n table.setColumnFilters(nonEmptyFilters);\n setFilters(nonEmptyFilters.length === 0 ? [placeholderFilter] : nonEmptyFilters);\n }\n };\n\n return (\n <Popover {...popoverProps} onChange={handleClose}>\n <Popover.Content>\n <FilterContext.Provider value={filters}>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table.filters.button}</h4>\n <p className=\"mb-0 mr-auto mt-px inline-flex text-gray-700\">\n {texts.table.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(\n // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.\n tableMeta.server._experimentalDataLoader2\n ? length\n : table.getFilteredRowModel().rows.length\n )\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(length))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns}\n filter={filter}\n position={index}\n onChange={handleChangeFilter}\n onRemove={filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button icon=\"circle-plus\" variant=\"tertiary\" onClick={handleCreate} name=\"add-filter\">\n {texts.table.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Inline spacing={8} alignInline=\"end\">\n <Popover.Close>\n <Button name=\"close-filters\">{texts.table.filters.buttons.cancel}</Button>\n </Popover.Close>\n <Button name=\"clear-filters\" onClick={handleClear}>\n {texts.table.filters.buttons.clear}\n </Button>\n <Button variant=\"primary\" name=\"apply-filters\" onClick={handleApply}>\n {texts.table.filters.buttons.apply}\n </Button>\n </Inline>\n </div>\n </FilterContext.Provider>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["TableFilterComparator","useLocalization","isInternalColumn","sortByHeader","isEmptyFilter","Popover","FilterContext","Filter","Button","Inline"],"mappings":";;;;;;;;;;;;AAkBA,MAAM,oBAAiC,EAAE,IAAI,IAAI,OAAO,EAAE,YAAYA,MAAAA,sBAAsB,UAAU,OAAO,SAAU;AAEhH,SAAS,qBAAsC,OAAyC;AAC3F,QAAM,EAAE,QAAQ,OAAO,GAAG,iBAAiB;AAC3C,QAAM,EAAE,QAAQ,MAAA,IAAUC,6BAAA;AAE1B,QAAM,aAAa,MACd,kBAAA,EACA,OAAO,CAAA,WAAU,CAACC,QAAAA,iBAAiB,OAAO,EAAE,CAAC,EAC7C,KAAKC,KAAAA,YAAY;AAEtB,QAAM,gBAAgB,MAAM,SAAA,EAAW;AACvC,QAAM,YAAY,MAAM,QAAQ;AAGhC,QAAM,CAAC,SAAS,UAAU,IAAI,MAAM,SAAwB,cAAc,SAAS,gBAAgB,CAAC,iBAAiB,CAAC;AAGtH,QAAM,UAAU,MAAM;AAClB,eAAW,cAAc,WAAW,IAAI,CAAC,iBAAiB,IAAI,aAAa;AAG3E,0BAAsB,MAAM;AACxB,YAAM,eAAe,SAAS,iBAAiB,sCAAsC;AACrF,YAAM,aAAa,CAAC,GAAG,YAAY,EAAE,GAAG,EAAE;AAEzC,kBAA4B,MAAA;AAAA,IACjC,CAAC;AAAA,EACL,GAAG,CAAC,aAAa,CAAC;AAGlB,QAAM,qBAAqB,CAAC,UAAkB,WAAoD;AAC9F,eAAW,CAAA,mBAAkB;AACzB,aAAO,eAAe,IAAI,CAAC,SAAS,UAAU;AAC1C,YAAI,UAAU,UAAU;AACpB,iBAAO;AAAA,QACX;AACA,eAAO;AAAA,MACX,CAAC;AAAA,IACL,CAAC;AAAA,EACL;AAEA,QAAM,qBAAqB,CAAC,aAAqB;AAC7C,QAAI,QAAQ,WAAW,GAAG;AACtB,iBAAW,CAAC,iBAAiB,CAAC;AAC9B;AAAA,IACJ;AAEA,eAAW,CAAA,mBAAkB,eAAe,OAAO,CAAC,GAAG,UAAU,UAAU,QAAQ,CAAC;AAAA,EACxF;AAEA,QAAM,eAAe,MAAM;AACvB,eAAW,QAAQ,OAAO,iBAAiB,CAAC;AAAA,EAChD;AAGA,QAAM,cAAc,MAAM;AACtB,UAAM,iBAAiB,MAAM;AACzB,YAAM,aAAa,QAAQ,OAAO,CAAA,MAAK;AACnC,YAAI,EAAE,OAAO,QAAQ,EAAE,OAAO,IAAI;AAC9B,iBAAO;AAAA,QACX;AAEA,cAAM,kBAAkB,WAAW,KAAK,CAAA,WAAU,OAAO,OAAO,EAAE,EAAE,GAAG,UAAU,MAAM;AAEvF,YACI,EAAE,MAAM,eAAeH,MAAAA,sBAAsB,WAC7C,EAAE,MAAM,eAAeA,MAAAA,sBAAsB,cAC7C,oBAAoB,UACtB;AACE,iBAAO;AAAA,QACX;AAEA,cAAM,QAAQ,EAAE,MAAM;AAEtB,eAAO,UAAU,UAAa,UAAU,QAAQ,UAAU;AAAA,MAC9D,CAAC;AAED,aAAO;AAAA,IACX,CAAC;AAAA,EACL;AAEA,QAAM,cAAc,MAAM;AACtB,UAAM,mBAAA;AACN,eAAW,CAAC,iBAAiB,CAAC;AAAA,EAClC;AAEA,QAAM,cAAc,CAAC,SAAkB;AACnC,QAAI,CAAC,MAAM;AACP,YAAM,kBAAkB,cAAc,OAAO,OAAK,CAACI,KAAAA,cAAc,CAAC,CAAC;AACnE,YAAM,iBAAiB,eAAe;AACtC,iBAAW,gBAAgB,WAAW,IAAI,CAAC,iBAAiB,IAAI,eAAe;AAAA,IACnF;AAAA,EACJ;AAEA,SACI,sBAAA,cAACC,QAAAA,WAAS,GAAG,cAAc,UAAU,YAAA,GACjC,sBAAA,cAACA,QAAAA,QAAQ,SAAR,0CACIC,cAAAA,cAAc,UAAd,EAAuB,OAAO,QAAA,uCAC1B,OAAA,EAAI,WAAU,mCACX,sBAAA,cAAC,OAAA,EAAI,WAAU,WAAA,GACX,sBAAA,cAAC,SAAI,WAAU,iCAAA,uCACV,MAAA,EAAG,WAAU,sBAAoB,MAAM,MAAM,QAAQ,MAAO,uCAC5D,KAAA,EAAE,WAAU,kDACR,MAAM,MAAM,QAAQ,MAChB;AAAA,IACG;AAAA,IACA,IAAI,KAAK,aAAa,MAAM,EAAE;AAAA;AAAA,MAE1B,UAAU,OAAO,2BACX,SACA,MAAM,oBAAA,EAAsB,KAAK;AAAA,IAAA;AAAA,EAC3C,EAEH,QAAQ,WAAW,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAC,CACxE,CACJ,CACJ,GACA,sBAAA,cAAC,OAAA,EAAI,WAAU,yBACV,QAAQ,IAAI,CAAC,QAAQ,UAClB,sBAAA;AAAA,IAACC,OAAAA;AAAAA,IAAA;AAAA,MACG,KAAK,UAAU,KAAK;AAAA,MACpB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV,UAAU,QAAQ,KAAK,CAAA,MAAK,EAAE,EAAE,KAAK,QAAQ,SAAS,IAAI,qBAAqB;AAAA,IAAA;AAAA,EAAA,CAEtF,GACD,sBAAA,cAAC,OAAA,EAAI,WAAU,gBAAA,GACX,sBAAA,cAACC,OAAAA,QAAA,EAAO,MAAK,eAAc,SAAQ,YAAW,SAAS,cAAc,MAAK,gBACrE,MAAM,MAAM,QAAQ,QAAQ,SACjC,CACJ,CACJ,uCACCC,OAAAA,QAAA,EAAO,SAAS,GAAG,aAAY,SAC5B,sBAAA,cAACJ,QAAAA,QAAQ,OAAR,0CACIG,OAAAA,QAAA,EAAO,MAAK,gBAAA,GAAiB,MAAM,MAAM,QAAQ,QAAQ,MAAO,CACrE,GACA,sBAAA,cAACA,OAAAA,QAAA,EAAO,MAAK,iBAAgB,SAAS,YAAA,GACjC,MAAM,MAAM,QAAQ,QAAQ,KACjC,GACA,sBAAA,cAACA,OAAAA,UAAO,SAAQ,WAAU,MAAK,iBAAgB,SAAS,YAAA,GACnD,MAAM,MAAM,QAAQ,QAAQ,KACjC,CACJ,CACJ,CACJ,CACJ,CACJ;AAER;;"}
1
+ {"version":3,"file":"ManageFiltersPopover.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Button, Inline, Popover, useLocalization } from '@/components';\n\nimport type { TableFilter, TableFilterValue } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { isInternalColumn } from '../../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../../useTableManager/util/rows';\n\nimport { Filter } from './components/Filter';\nimport { FilterContext } from './FilterContext';\nimport { isEmptyFilter, sortByHeader } from './util';\n\nexport type ManageFiltersPopoverProps<TType = unknown> = {\n length: number;\n table: ReactTable<TType>;\n};\n\nconst placeholderFilter: TableFilter = { id: '', value: { comparator: TableFilterComparator.Contains, value: undefined } };\n\nexport function ManageFiltersPopover<TType = unknown>(props: ManageFiltersPopoverProps<TType>) {\n const { length, table, ...popoverProps } = props;\n const { locale, texts } = useLocalization();\n\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const tableMeta = getTableMeta(table);\n\n // state, since we \"apply\" filters - our filter values have a special shape, so we force to our type\n const [filters, setFilters] = React.useState<TableFilter[]>(columnFilters.length ? columnFilters : [placeholderFilter]);\n\n // this runs if filters are set outside (e.g. through column header)\n React.useEffect(() => {\n setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);\n\n // focus the filter value, as we preset the column/comparator.\n requestAnimationFrame(() => {\n const filterValues = document.querySelectorAll('[data-query-selector=\"filter-value\"]');\n const lastFilter = [...filterValues].at(-1);\n\n (lastFilter as HTMLElement)?.focus();\n });\n }, [columnFilters]);\n\n // filters\n const handleChangeFilter = (position: number, filter: { id: string; value: TableFilterValue }) => {\n setFilters(currentFilters => {\n return currentFilters.map((current, index) => {\n if (index === position) {\n return filter;\n }\n return current;\n });\n });\n };\n\n const handleRemoveFilter = (position: number) => {\n if (filters.length === 1) {\n setFilters([placeholderFilter]);\n return;\n }\n\n setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));\n };\n\n const handleCreate = () => {\n setFilters(filters.concat(placeholderFilter));\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null || f.id === '') {\n return false;\n }\n\n const controlRenderer = allColumns.find(column => column.id === f.id)?.columnDef.meta?.control;\n\n if (\n f.value.comparator === TableFilterComparator.IsEmpty ||\n f.value.comparator === TableFilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n\n const value = f.value.value;\n\n return value !== undefined && value !== null && value !== '';\n });\n\n return newFilters;\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([placeholderFilter]);\n };\n\n const handleClose = (open: boolean) => {\n if (!open) {\n const nonEmptyFilters = columnFilters.filter(f => !isEmptyFilter(f));\n table.setColumnFilters(nonEmptyFilters);\n setFilters(nonEmptyFilters.length === 0 ? [placeholderFilter] : nonEmptyFilters);\n }\n };\n\n return (\n <Popover {...popoverProps} onChange={handleClose}>\n <Popover.Content>\n <FilterContext.Provider value={filters}>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table.filters.button}</h4>\n <p className=\"mb-0 mr-auto mt-px inline-flex text-gray-700\">\n {texts.table.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(\n // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.\n tableMeta.server._experimentalDataLoader2\n ? length\n : table.getFilteredRowModel().rows.length\n )\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(length))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns}\n filter={filter}\n position={index}\n onChange={handleChangeFilter}\n onRemove={filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button icon=\"circle-plus\" variant=\"tertiary\" onClick={handleCreate} name=\"add-filter\">\n {texts.table.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Inline spacing={8} alignInline=\"end\">\n <Popover.Close>\n <Button name=\"close-filters\">{texts.table.filters.buttons.cancel}</Button>\n </Popover.Close>\n <Button name=\"clear-filters\" onClick={handleClear}>\n {texts.table.filters.buttons.clear}\n </Button>\n <Button variant=\"primary\" name=\"apply-filters\" onClick={handleApply}>\n {texts.table.filters.buttons.apply}\n </Button>\n </Inline>\n </div>\n </FilterContext.Provider>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["TableFilterComparator","useLocalization","isInternalColumn","sortByHeader","getTableMeta","isEmptyFilter","Popover","FilterContext","Filter","Button","Inline"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import React__default from "react";
2
2
  import { TableFilterComparator } from "../../../../../types.js";
3
3
  import { isInternalColumn } from "../../../../../useTableManager/util/columns.js";
4
+ import { getTableMeta } from "../../../../../useTableManager/util/rows.js";
4
5
  import { Filter } from "./components/Filter.js";
5
6
  import { FilterContext } from "./FilterContext.js";
6
7
  import { sortByHeader, isEmptyFilter } from "./util.js";
@@ -14,7 +15,7 @@ function ManageFiltersPopover(props) {
14
15
  const { locale, texts } = useLocalization();
15
16
  const allColumns = table.getAllLeafColumns().filter((column) => !isInternalColumn(column.id)).sort(sortByHeader);
16
17
  const columnFilters = table.getState().columnFilters;
17
- const tableMeta = table.options.meta;
18
+ const tableMeta = getTableMeta(table);
18
19
  const [filters, setFilters] = React__default.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
19
20
  React__default.useEffect(() => {
20
21
  setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);
@@ -1 +1 @@
1
- {"version":3,"file":"ManageFiltersPopover.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Button, Inline, Popover, useLocalization } from '@/components';\n\nimport type { TableFilter, TableFilterValue } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { isInternalColumn } from '../../../../../useTableManager/util/columns';\n\nimport { Filter } from './components/Filter';\nimport { FilterContext } from './FilterContext';\nimport { isEmptyFilter, sortByHeader } from './util';\n\nexport type ManageFiltersPopoverProps<TType = unknown> = {\n length: number;\n table: ReactTable<TType>;\n};\n\nconst placeholderFilter: TableFilter = { id: '', value: { comparator: TableFilterComparator.Contains, value: undefined } };\n\nexport function ManageFiltersPopover<TType = unknown>(props: ManageFiltersPopoverProps<TType>) {\n const { length, table, ...popoverProps } = props;\n const { locale, texts } = useLocalization();\n\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n // state, since we \"apply\" filters - our filter values have a special shape, so we force to our type\n const [filters, setFilters] = React.useState<TableFilter[]>(columnFilters.length ? columnFilters : [placeholderFilter]);\n\n // this runs if filters are set outside (e.g. through column header)\n React.useEffect(() => {\n setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);\n\n // focus the filter value, as we preset the column/comparator.\n requestAnimationFrame(() => {\n const filterValues = document.querySelectorAll('[data-query-selector=\"filter-value\"]');\n const lastFilter = [...filterValues].at(-1);\n\n (lastFilter as HTMLElement)?.focus();\n });\n }, [columnFilters]);\n\n // filters\n const handleChangeFilter = (position: number, filter: { id: string; value: TableFilterValue }) => {\n setFilters(currentFilters => {\n return currentFilters.map((current, index) => {\n if (index === position) {\n return filter;\n }\n return current;\n });\n });\n };\n\n const handleRemoveFilter = (position: number) => {\n if (filters.length === 1) {\n setFilters([placeholderFilter]);\n return;\n }\n\n setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));\n };\n\n const handleCreate = () => {\n setFilters(filters.concat(placeholderFilter));\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null || f.id === '') {\n return false;\n }\n\n const controlRenderer = allColumns.find(column => column.id === f.id)?.columnDef.meta?.control;\n\n if (\n f.value.comparator === TableFilterComparator.IsEmpty ||\n f.value.comparator === TableFilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n\n const value = f.value.value;\n\n return value !== undefined && value !== null && value !== '';\n });\n\n return newFilters;\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([placeholderFilter]);\n };\n\n const handleClose = (open: boolean) => {\n if (!open) {\n const nonEmptyFilters = columnFilters.filter(f => !isEmptyFilter(f));\n table.setColumnFilters(nonEmptyFilters);\n setFilters(nonEmptyFilters.length === 0 ? [placeholderFilter] : nonEmptyFilters);\n }\n };\n\n return (\n <Popover {...popoverProps} onChange={handleClose}>\n <Popover.Content>\n <FilterContext.Provider value={filters}>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table.filters.button}</h4>\n <p className=\"mb-0 mr-auto mt-px inline-flex text-gray-700\">\n {texts.table.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(\n // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.\n tableMeta.server._experimentalDataLoader2\n ? length\n : table.getFilteredRowModel().rows.length\n )\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(length))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns}\n filter={filter}\n position={index}\n onChange={handleChangeFilter}\n onRemove={filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button icon=\"circle-plus\" variant=\"tertiary\" onClick={handleCreate} name=\"add-filter\">\n {texts.table.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Inline spacing={8} alignInline=\"end\">\n <Popover.Close>\n <Button name=\"close-filters\">{texts.table.filters.buttons.cancel}</Button>\n </Popover.Close>\n <Button name=\"clear-filters\" onClick={handleClear}>\n {texts.table.filters.buttons.clear}\n </Button>\n <Button variant=\"primary\" name=\"apply-filters\" onClick={handleApply}>\n {texts.table.filters.buttons.apply}\n </Button>\n </Inline>\n </div>\n </FilterContext.Provider>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["React"],"mappings":"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"}
1
+ {"version":3,"file":"ManageFiltersPopover.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { Button, Inline, Popover, useLocalization } from '@/components';\n\nimport type { TableFilter, TableFilterValue } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { isInternalColumn } from '../../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../../useTableManager/util/rows';\n\nimport { Filter } from './components/Filter';\nimport { FilterContext } from './FilterContext';\nimport { isEmptyFilter, sortByHeader } from './util';\n\nexport type ManageFiltersPopoverProps<TType = unknown> = {\n length: number;\n table: ReactTable<TType>;\n};\n\nconst placeholderFilter: TableFilter = { id: '', value: { comparator: TableFilterComparator.Contains, value: undefined } };\n\nexport function ManageFiltersPopover<TType = unknown>(props: ManageFiltersPopoverProps<TType>) {\n const { length, table, ...popoverProps } = props;\n const { locale, texts } = useLocalization();\n\n const allColumns = table\n .getAllLeafColumns()\n .filter(column => !isInternalColumn(column.id))\n .sort(sortByHeader);\n\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const tableMeta = getTableMeta(table);\n\n // state, since we \"apply\" filters - our filter values have a special shape, so we force to our type\n const [filters, setFilters] = React.useState<TableFilter[]>(columnFilters.length ? columnFilters : [placeholderFilter]);\n\n // this runs if filters are set outside (e.g. through column header)\n React.useEffect(() => {\n setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);\n\n // focus the filter value, as we preset the column/comparator.\n requestAnimationFrame(() => {\n const filterValues = document.querySelectorAll('[data-query-selector=\"filter-value\"]');\n const lastFilter = [...filterValues].at(-1);\n\n (lastFilter as HTMLElement)?.focus();\n });\n }, [columnFilters]);\n\n // filters\n const handleChangeFilter = (position: number, filter: { id: string; value: TableFilterValue }) => {\n setFilters(currentFilters => {\n return currentFilters.map((current, index) => {\n if (index === position) {\n return filter;\n }\n return current;\n });\n });\n };\n\n const handleRemoveFilter = (position: number) => {\n if (filters.length === 1) {\n setFilters([placeholderFilter]);\n return;\n }\n\n setFilters(currentFilters => currentFilters.filter((_, index) => index !== position));\n };\n\n const handleCreate = () => {\n setFilters(filters.concat(placeholderFilter));\n };\n\n //\n const handleApply = () => {\n table.setColumnFilters(() => {\n const newFilters = filters.filter(f => {\n if (f.id === null || f.id === '') {\n return false;\n }\n\n const controlRenderer = allColumns.find(column => column.id === f.id)?.columnDef.meta?.control;\n\n if (\n f.value.comparator === TableFilterComparator.IsEmpty ||\n f.value.comparator === TableFilterComparator.IsNotEmpty ||\n controlRenderer === 'switch'\n ) {\n return true;\n }\n\n const value = f.value.value;\n\n return value !== undefined && value !== null && value !== '';\n });\n\n return newFilters;\n });\n };\n\n const handleClear = () => {\n table.resetColumnFilters();\n setFilters([placeholderFilter]);\n };\n\n const handleClose = (open: boolean) => {\n if (!open) {\n const nonEmptyFilters = columnFilters.filter(f => !isEmptyFilter(f));\n table.setColumnFilters(nonEmptyFilters);\n setFilters(nonEmptyFilters.length === 0 ? [placeholderFilter] : nonEmptyFilters);\n }\n };\n\n return (\n <Popover {...popoverProps} onChange={handleClose}>\n <Popover.Content>\n <FilterContext.Provider value={filters}>\n <div className=\"flex w-[40rem] flex-col gap-4\">\n <div className=\"flex h-8\">\n <div className=\"flex w-full items-center gap-2\">\n <h4 className=\"mb-0 inline-flex\">{texts.table.filters.button}</h4>\n <p className=\"mb-0 mr-auto mt-px inline-flex text-gray-700\">\n {texts.table.filters.total\n .replace(\n '[CURRENT]',\n new Intl.NumberFormat(locale).format(\n // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.\n tableMeta.server._experimentalDataLoader2\n ? length\n : table.getFilteredRowModel().rows.length\n )\n )\n .replace('[TOTAL]', new Intl.NumberFormat(locale).format(length))}\n </p>\n </div>\n </div>\n <div className=\"flex flex-col gap-2\">\n {filters.map((filter, index) => (\n <Filter\n key={`filter_${index}`}\n allColumns={allColumns}\n filter={filter}\n position={index}\n onChange={handleChangeFilter}\n onRemove={filters.some(f => f.id) || filters.length > 1 ? handleRemoveFilter : undefined}\n />\n ))}\n <div className=\"justify-start\">\n <Button icon=\"circle-plus\" variant=\"tertiary\" onClick={handleCreate} name=\"add-filter\">\n {texts.table.filters.buttons.addFilter}\n </Button>\n </div>\n </div>\n <Inline spacing={8} alignInline=\"end\">\n <Popover.Close>\n <Button name=\"close-filters\">{texts.table.filters.buttons.cancel}</Button>\n </Popover.Close>\n <Button name=\"clear-filters\" onClick={handleClear}>\n {texts.table.filters.buttons.clear}\n </Button>\n <Button variant=\"primary\" name=\"apply-filters\" onClick={handleApply}>\n {texts.table.filters.buttons.apply}\n </Button>\n </Inline>\n </div>\n </FilterContext.Provider>\n </Popover.Content>\n </Popover>\n );\n}\n"],"names":["React"],"mappings":"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"}
@@ -10,11 +10,11 @@ function isEmptyFilter(filter) {
10
10
  return !filter.value.hasOwnProperty("value");
11
11
  }
12
12
  function guessComparatorsBasedOnControl(column) {
13
- const columnMeta = column?.columnDef.meta ?? {};
14
- if (Array.isArray(columnMeta.filters)) {
13
+ const columnMeta = column?.columnDef.meta;
14
+ if (Array.isArray(columnMeta?.filters)) {
15
15
  return columnMeta.filters;
16
16
  }
17
- if (typeof columnMeta.control === "function") {
17
+ if (typeof columnMeta?.control === "function") {
18
18
  const renderedControl = columnMeta.control({
19
19
  onBlur: () => void 0,
20
20
  onFocus: () => void 0,
@@ -46,13 +46,13 @@ function guessComparatorsBasedOnControl(column) {
46
46
  }
47
47
  }
48
48
  }
49
- if (columnMeta.control === "datepicker") {
49
+ if (columnMeta?.control === "datepicker") {
50
50
  return dataTypes.getDataTypeProperties("datetime").filterComparators;
51
51
  }
52
- if (columnMeta.control === "switch") {
52
+ if (columnMeta?.control === "switch") {
53
53
  return dataTypes.getDataTypeProperties("boolean").filterComparators;
54
54
  }
55
- return dataTypes.getDataTypeProperties(columnMeta.dataType).filterComparators;
55
+ return dataTypes.getDataTypeProperties(columnMeta?.dataType).filterComparators;
56
56
  }
57
57
  exports.guessComparatorsBasedOnControl = guessComparatorsBasedOnControl;
58
58
  exports.isEmptyFilter = isEmptyFilter;
@@ -1 +1 @@
1
- {"version":3,"file":"util.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/util.ts"],"sourcesContent":["import type { Column as ReactTableColumn, ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFilter } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { getDataTypeProperties } from '../../../../../useTableManager/util/dataTypes';\n\nexport function sortByHeader<TType = unknown>(a: ReactTableColumn<TType>, b: ReactTableColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport function isEmptyFilter(filter: TableFilter) {\n return !filter.value.hasOwnProperty('value'); // oxlint-disable-line no-prototype-builtins\n}\n\nexport function guessComparatorsBasedOnControl<TType = unknown>(column?: ReactTableColumn<TType>): TableFilterComparator[] {\n const columnMeta = (column?.columnDef.meta ?? {}) as ReactTableColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n TableFilterComparator.HasAnyOf,\n TableFilterComparator.HasAllOf,\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.HasNoneOf,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.IsNotEqualTo,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta.control === 'datepicker') {\n return getDataTypeProperties<TType>('datetime').filterComparators;\n }\n\n if (columnMeta.control === 'switch') {\n return getDataTypeProperties<TType>('boolean').filterComparators;\n }\n\n return getDataTypeProperties<TType>(columnMeta.dataType).filterComparators;\n}\n"],"names":["TableFilterComparator","getDataTypeProperties"],"mappings":";;;;;AAOO,SAAS,aAA8B,GAA4B,GAA4B;AAClG,SAAQ,EAAE,UAAU,MAAM,QAAmB,gBAAgB,EAAE,UAAU,MAAM,MAAgB;AACnG;AAEO,SAAS,cAAc,QAAqB;AAC/C,SAAO,CAAC,OAAO,MAAM,eAAe,OAAO;AAC/C;AAEO,SAAS,+BAAgD,QAA2D;AACvH,QAAM,aAAc,QAAQ,UAAU,QAAQ,CAAA;AAE9C,MAAI,MAAM,QAAQ,WAAW,OAAO,GAAG;AACnC,WAAO,WAAW;AAAA,EACtB;AAEA,MAAI,OAAO,WAAW,YAAY,YAAY;AAC1C,UAAM,kBAAkB,WAAW,QAAQ;AAAA,MACvC,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,IAAA,CACR;AAED,QAAI,MAAM,eAAe,eAAe,GAAG;AACvC,YAAM,EAAE,OAAO,KAAA,IAAS;AAExB,UAAI,KAAK,gBAAgB,WAAW;AAChC,YAAI,MAAM,UAAU;AAChB,iBAAO;AAAA,YACHA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,4BAAsB;AAAA,UAAA;AAAA,QAE9B;AAEA,eAAO;AAAA,UACHA,MAAAA,sBAAsB;AAAA,UACtBA,MAAAA,sBAAsB;AAAA,UACtBA,MAAAA,sBAAsB;AAAA,UACtBA,4BAAsB;AAAA,QAAA;AAAA,MAE9B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,WAAW,YAAY,cAAc;AACrC,WAAOC,UAAAA,sBAA6B,UAAU,EAAE;AAAA,EACpD;AAEA,MAAI,WAAW,YAAY,UAAU;AACjC,WAAOA,UAAAA,sBAA6B,SAAS,EAAE;AAAA,EACnD;AAEA,SAAOA,gCAA6B,WAAW,QAAQ,EAAE;AAC7D;;;;"}
1
+ {"version":3,"file":"util.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/util.ts"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFilter } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { getDataTypeProperties } from '../../../../../useTableManager/util/dataTypes';\n\nexport function sortByHeader<TType = unknown>(a: ReactTableColumn<TType>, b: ReactTableColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport function isEmptyFilter(filter: TableFilter) {\n return !filter.value.hasOwnProperty('value'); // oxlint-disable-line no-prototype-builtins\n}\n\nexport function guessComparatorsBasedOnControl<TType = unknown>(column?: ReactTableColumn<TType>): TableFilterComparator[] {\n const columnMeta = column?.columnDef.meta;\n\n if (Array.isArray(columnMeta?.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta?.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n TableFilterComparator.HasAnyOf,\n TableFilterComparator.HasAllOf,\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.HasNoneOf,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.IsNotEqualTo,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta?.control === 'datepicker') {\n return getDataTypeProperties<TType>('datetime').filterComparators;\n }\n\n if (columnMeta?.control === 'switch') {\n return getDataTypeProperties<TType>('boolean').filterComparators;\n }\n\n return getDataTypeProperties<TType>(columnMeta?.dataType).filterComparators;\n}\n"],"names":["TableFilterComparator","getDataTypeProperties"],"mappings":";;;;;AAOO,SAAS,aAA8B,GAA4B,GAA4B;AAClG,SAAQ,EAAE,UAAU,MAAM,QAAmB,gBAAgB,EAAE,UAAU,MAAM,MAAgB;AACnG;AAEO,SAAS,cAAc,QAAqB;AAC/C,SAAO,CAAC,OAAO,MAAM,eAAe,OAAO;AAC/C;AAEO,SAAS,+BAAgD,QAA2D;AACvH,QAAM,aAAa,QAAQ,UAAU;AAErC,MAAI,MAAM,QAAQ,YAAY,OAAO,GAAG;AACpC,WAAO,WAAW;AAAA,EACtB;AAEA,MAAI,OAAO,YAAY,YAAY,YAAY;AAC3C,UAAM,kBAAkB,WAAW,QAAQ;AAAA,MACvC,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,IAAA,CACR;AAED,QAAI,MAAM,eAAe,eAAe,GAAG;AACvC,YAAM,EAAE,OAAO,KAAA,IAAS;AAExB,UAAI,KAAK,gBAAgB,WAAW;AAChC,YAAI,MAAM,UAAU;AAChB,iBAAO;AAAA,YACHA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,MAAAA,sBAAsB;AAAA,YACtBA,4BAAsB;AAAA,UAAA;AAAA,QAE9B;AAEA,eAAO;AAAA,UACHA,MAAAA,sBAAsB;AAAA,UACtBA,MAAAA,sBAAsB;AAAA,UACtBA,MAAAA,sBAAsB;AAAA,UACtBA,4BAAsB;AAAA,QAAA;AAAA,MAE9B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,YAAY,YAAY,cAAc;AACtC,WAAOC,UAAAA,sBAA6B,UAAU,EAAE;AAAA,EACpD;AAEA,MAAI,YAAY,YAAY,UAAU;AAClC,WAAOA,UAAAA,sBAA6B,SAAS,EAAE;AAAA,EACnD;AAEA,SAAOA,gCAA6B,YAAY,QAAQ,EAAE;AAC9D;;;;"}
@@ -8,11 +8,11 @@ function isEmptyFilter(filter) {
8
8
  return !filter.value.hasOwnProperty("value");
9
9
  }
10
10
  function guessComparatorsBasedOnControl(column) {
11
- const columnMeta = column?.columnDef.meta ?? {};
12
- if (Array.isArray(columnMeta.filters)) {
11
+ const columnMeta = column?.columnDef.meta;
12
+ if (Array.isArray(columnMeta?.filters)) {
13
13
  return columnMeta.filters;
14
14
  }
15
- if (typeof columnMeta.control === "function") {
15
+ if (typeof columnMeta?.control === "function") {
16
16
  const renderedControl = columnMeta.control({
17
17
  onBlur: () => void 0,
18
18
  onFocus: () => void 0,
@@ -44,13 +44,13 @@ function guessComparatorsBasedOnControl(column) {
44
44
  }
45
45
  }
46
46
  }
47
- if (columnMeta.control === "datepicker") {
47
+ if (columnMeta?.control === "datepicker") {
48
48
  return getDataTypeProperties("datetime").filterComparators;
49
49
  }
50
- if (columnMeta.control === "switch") {
50
+ if (columnMeta?.control === "switch") {
51
51
  return getDataTypeProperties("boolean").filterComparators;
52
52
  }
53
- return getDataTypeProperties(columnMeta.dataType).filterComparators;
53
+ return getDataTypeProperties(columnMeta?.dataType).filterComparators;
54
54
  }
55
55
  export {
56
56
  guessComparatorsBasedOnControl,
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/util.ts"],"sourcesContent":["import type { Column as ReactTableColumn, ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFilter } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { getDataTypeProperties } from '../../../../../useTableManager/util/dataTypes';\n\nexport function sortByHeader<TType = unknown>(a: ReactTableColumn<TType>, b: ReactTableColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport function isEmptyFilter(filter: TableFilter) {\n return !filter.value.hasOwnProperty('value'); // oxlint-disable-line no-prototype-builtins\n}\n\nexport function guessComparatorsBasedOnControl<TType = unknown>(column?: ReactTableColumn<TType>): TableFilterComparator[] {\n const columnMeta = (column?.columnDef.meta ?? {}) as ReactTableColumnMeta<TType, unknown>;\n\n if (Array.isArray(columnMeta.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n TableFilterComparator.HasAnyOf,\n TableFilterComparator.HasAllOf,\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.HasNoneOf,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.IsNotEqualTo,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta.control === 'datepicker') {\n return getDataTypeProperties<TType>('datetime').filterComparators;\n }\n\n if (columnMeta.control === 'switch') {\n return getDataTypeProperties<TType>('boolean').filterComparators;\n }\n\n return getDataTypeProperties<TType>(columnMeta.dataType).filterComparators;\n}\n"],"names":["React"],"mappings":";;;AAOO,SAAS,aAA8B,GAA4B,GAA4B;AAClG,SAAQ,EAAE,UAAU,MAAM,QAAmB,gBAAgB,EAAE,UAAU,MAAM,MAAgB;AACnG;AAEO,SAAS,cAAc,QAAqB;AAC/C,SAAO,CAAC,OAAO,MAAM,eAAe,OAAO;AAC/C;AAEO,SAAS,+BAAgD,QAA2D;AACvH,QAAM,aAAc,QAAQ,UAAU,QAAQ,CAAA;AAE9C,MAAI,MAAM,QAAQ,WAAW,OAAO,GAAG;AACnC,WAAO,WAAW;AAAA,EACtB;AAEA,MAAI,OAAO,WAAW,YAAY,YAAY;AAC1C,UAAM,kBAAkB,WAAW,QAAQ;AAAA,MACvC,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,IAAA,CACR;AAED,QAAIA,eAAM,eAAe,eAAe,GAAG;AACvC,YAAM,EAAE,OAAO,KAAA,IAAS;AAExB,UAAI,KAAK,gBAAgB,WAAW;AAChC,YAAI,MAAM,UAAU;AAChB,iBAAO;AAAA,YACH,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,UAAA;AAAA,QAE9B;AAEA,eAAO;AAAA,UACH,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,QAAA;AAAA,MAE9B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,WAAW,YAAY,cAAc;AACrC,WAAO,sBAA6B,UAAU,EAAE;AAAA,EACpD;AAEA,MAAI,WAAW,YAAY,UAAU;AACjC,WAAO,sBAA6B,SAAS,EAAE;AAAA,EACnD;AAEA,SAAO,sBAA6B,WAAW,QAAQ,EAAE;AAC7D;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/util.ts"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableFilter } from '../../../../../types';\nimport { TableFilterComparator } from '../../../../../types';\nimport { getDataTypeProperties } from '../../../../../useTableManager/util/dataTypes';\n\nexport function sortByHeader<TType = unknown>(a: ReactTableColumn<TType>, b: ReactTableColumn<TType>) {\n return (a.columnDef.meta?.header as string)?.localeCompare?.(b.columnDef.meta?.header as string);\n}\n\nexport function isEmptyFilter(filter: TableFilter) {\n return !filter.value.hasOwnProperty('value'); // oxlint-disable-line no-prototype-builtins\n}\n\nexport function guessComparatorsBasedOnControl<TType = unknown>(column?: ReactTableColumn<TType>): TableFilterComparator[] {\n const columnMeta = column?.columnDef.meta;\n\n if (Array.isArray(columnMeta?.filters)) {\n return columnMeta.filters;\n }\n\n if (typeof columnMeta?.control === 'function') {\n const renderedControl = columnMeta.control({\n onBlur: () => undefined,\n onFocus: () => undefined,\n setValue: () => undefined,\n value: undefined,\n disabled: false,\n readOnly: false,\n ref: undefined as any,\n });\n\n if (React.isValidElement(renderedControl)) {\n const { props, type } = renderedControl as any;\n\n if (type.displayName === 'Select2') {\n if (props.multiple) {\n return [\n TableFilterComparator.HasAnyOf,\n TableFilterComparator.HasAllOf,\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.HasNoneOf,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n\n return [\n TableFilterComparator.IsEqualTo,\n TableFilterComparator.IsNotEqualTo,\n TableFilterComparator.IsEmpty,\n TableFilterComparator.IsNotEmpty,\n ];\n }\n }\n }\n\n if (columnMeta?.control === 'datepicker') {\n return getDataTypeProperties<TType>('datetime').filterComparators;\n }\n\n if (columnMeta?.control === 'switch') {\n return getDataTypeProperties<TType>('boolean').filterComparators;\n }\n\n return getDataTypeProperties<TType>(columnMeta?.dataType).filterComparators;\n}\n"],"names":["React"],"mappings":";;;AAOO,SAAS,aAA8B,GAA4B,GAA4B;AAClG,SAAQ,EAAE,UAAU,MAAM,QAAmB,gBAAgB,EAAE,UAAU,MAAM,MAAgB;AACnG;AAEO,SAAS,cAAc,QAAqB;AAC/C,SAAO,CAAC,OAAO,MAAM,eAAe,OAAO;AAC/C;AAEO,SAAS,+BAAgD,QAA2D;AACvH,QAAM,aAAa,QAAQ,UAAU;AAErC,MAAI,MAAM,QAAQ,YAAY,OAAO,GAAG;AACpC,WAAO,WAAW;AAAA,EACtB;AAEA,MAAI,OAAO,YAAY,YAAY,YAAY;AAC3C,UAAM,kBAAkB,WAAW,QAAQ;AAAA,MACvC,QAAQ,MAAM;AAAA,MACd,SAAS,MAAM;AAAA,MACf,UAAU,MAAM;AAAA,MAChB,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAU;AAAA,MACV,KAAK;AAAA,IAAA,CACR;AAED,QAAIA,eAAM,eAAe,eAAe,GAAG;AACvC,YAAM,EAAE,OAAO,KAAA,IAAS;AAExB,UAAI,KAAK,gBAAgB,WAAW;AAChC,YAAI,MAAM,UAAU;AAChB,iBAAO;AAAA,YACH,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,YACtB,sBAAsB;AAAA,UAAA;AAAA,QAE9B;AAEA,eAAO;AAAA,UACH,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,UACtB,sBAAsB;AAAA,QAAA;AAAA,MAE9B;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,YAAY,YAAY,cAAc;AACtC,WAAO,sBAA6B,UAAU,EAAE;AAAA,EACpD;AAEA,MAAI,YAAY,YAAY,UAAU;AAClC,WAAO,sBAA6B,SAAS,EAAE;AAAA,EACnD;AAEA,SAAO,sBAA6B,YAAY,QAAQ,EAAE;AAC9D;"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const columns = require("../../../../../useTableManager/util/columns.cjs");
5
+ const rows = require("../../../../../useTableManager/util/rows.cjs");
5
6
  const settings = require("../../../../../useTableManager/util/settings.cjs");
6
7
  const PrintDialog = require("./PrintDialog.cjs");
7
8
  const Localization = require("../../../../../../../components/Provider/Localization.cjs");
@@ -14,7 +15,7 @@ function Print(props) {
14
15
  const ref = React.useRef(null);
15
16
  const lastScrollTopRef = React.useRef(void 0);
16
17
  const toast = Toaster.useToast();
17
- const tableMeta = table.options.meta;
18
+ const tableMeta = rows.getTableMeta(table);
18
19
  const { allRows, orientation, size, splitGroups } = tableMeta.printing.settings;
19
20
  const togglePrinting = React.useCallback(
20
21
  (enabled) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Print.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Shortcut, useLocalization, useToast } from '@/components';\n\nimport type { TableRef } from '../../../../../types';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\nimport { getSettings } from '../../../../../useTableManager/util/settings';\n\nimport { PrintDialog } from './PrintDialog';\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 | undefined>(undefined);\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 onPrint handler is provided, use it instead of built-in print functionality\n if (tableMeta.printing.onPrint) {\n try {\n await tableMeta.printing.onPrint(getSettings(table), tableMeta.printing.settings);\n toastRef.close();\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n // oxlint-disable-next-line no-console\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n return;\n }\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 // oxlint-disable-next-line no-console\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/iu.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 {\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 <LegacyIconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n id={`${tableId}-toolbar-print`}\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":["useLocalization","useToast","getSettings","getHiddenColumns","Shortcut","LegacyIconButton","PrintDialog"],"mappings":"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"}
1
+ {"version":3,"file":"Print.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Shortcut, useLocalization, useToast } from '@/components';\n\nimport type { TableRef } from '../../../../../types';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../../useTableManager/util/rows';\nimport { getSettings } from '../../../../../useTableManager/util/settings';\n\nimport { PrintDialog } from './PrintDialog';\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 | undefined>(undefined);\n const toast = useToast();\n const tableMeta = getTableMeta(table);\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 onPrint handler is provided, use it instead of built-in print functionality\n if (tableMeta.printing.onPrint) {\n try {\n await tableMeta.printing.onPrint(getSettings(table), tableMeta.printing.settings);\n toastRef.close();\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n // oxlint-disable-next-line no-console\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n return;\n }\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 // oxlint-disable-next-line no-console\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/iu.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 {\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 <LegacyIconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n id={`${tableId}-toolbar-print`}\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":["useLocalization","useToast","getTableMeta","getSettings","getHiddenColumns","Shortcut","LegacyIconButton","PrintDialog"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import React__default from "react";
2
2
  import { getHiddenColumns } from "../../../../../useTableManager/util/columns.js";
3
+ import { getTableMeta } from "../../../../../useTableManager/util/rows.js";
3
4
  import { getSettings } from "../../../../../useTableManager/util/settings.js";
4
5
  import { PrintDialog } from "./PrintDialog.js";
5
6
  import { useLocalization } from "../../../../../../../components/Provider/Localization.js";
@@ -12,7 +13,7 @@ function Print(props) {
12
13
  const ref = React__default.useRef(null);
13
14
  const lastScrollTopRef = React__default.useRef(void 0);
14
15
  const toast = useToast();
15
- const tableMeta = table.options.meta;
16
+ const tableMeta = getTableMeta(table);
16
17
  const { allRows, orientation, size, splitGroups } = tableMeta.printing.settings;
17
18
  const togglePrinting = React__default.useCallback(
18
19
  (enabled) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Print.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Shortcut, useLocalization, useToast } from '@/components';\n\nimport type { TableRef } from '../../../../../types';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\nimport { getSettings } from '../../../../../useTableManager/util/settings';\n\nimport { PrintDialog } from './PrintDialog';\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 | undefined>(undefined);\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 onPrint handler is provided, use it instead of built-in print functionality\n if (tableMeta.printing.onPrint) {\n try {\n await tableMeta.printing.onPrint(getSettings(table), tableMeta.printing.settings);\n toastRef.close();\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n // oxlint-disable-next-line no-console\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n return;\n }\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 // oxlint-disable-next-line no-console\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/iu.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 {\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 <LegacyIconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n id={`${tableId}-toolbar-print`}\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":["React"],"mappings":"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"}
1
+ {"version":3,"file":"Print.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Print/Print.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, Shortcut, useLocalization, useToast } from '@/components';\n\nimport type { TableRef } from '../../../../../types';\nimport { getHiddenColumns } from '../../../../../useTableManager/util/columns';\nimport { getTableMeta } from '../../../../../useTableManager/util/rows';\nimport { getSettings } from '../../../../../useTableManager/util/settings';\n\nimport { PrintDialog } from './PrintDialog';\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 | undefined>(undefined);\n const toast = useToast();\n const tableMeta = getTableMeta(table);\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 onPrint handler is provided, use it instead of built-in print functionality\n if (tableMeta.printing.onPrint) {\n try {\n await tableMeta.printing.onPrint(getSettings(table), tableMeta.printing.settings);\n toastRef.close();\n } catch (error) {\n const errorMessage = `${texts.table.print.error}: ${error}`;\n // oxlint-disable-next-line no-console\n console.error(errorMessage);\n toastRef.error(errorMessage);\n }\n return;\n }\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 // oxlint-disable-next-line no-console\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/iu.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 {\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 <LegacyIconButton\n icon=\"print\"\n aria-label={texts.table.print.tooltip}\n id={`${tableId}-toolbar-print`}\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":["React"],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const React = require("react");
4
4
  const columns = require("../../../../../useTableManager/util/columns.cjs");
5
+ const rows = require("../../../../../useTableManager/util/rows.cjs");
5
6
  const Localization = require("../../../../../../../components/Provider/Localization.cjs");
6
7
  const Switch = require("../../../../../../../components/Switch/Switch.cjs");
7
8
  const SearchInput2 = require("../../../../../../../components/SearchInput2/SearchInput2.cjs");
@@ -10,7 +11,7 @@ function Search(props) {
10
11
  const { texts } = Localization.useLocalization();
11
12
  const ref = React.useRef(null);
12
13
  const lastResultQuery = React.useRef(void 0);
13
- const tableMeta = table.options.meta;
14
+ const tableMeta = rows.getTableMeta(table);
14
15
  const query = table.getState().globalFilter;
15
16
  const scrollTo = (rowIndex) => scrollToIndex(rowIndex, { align: "center" });
16
17
  const hiddenColumns = columns.getHiddenColumns(table.getState().columnVisibility);