@economic/taco 14.0.0 → 14.1.0-EC-85807-code-report-fixes.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 (364) hide show
  1. package/dist/charts/components/Area/AreaChart.cjs.map +1 -1
  2. package/dist/charts/components/Area/AreaChart.d.ts +1 -1
  3. package/dist/charts/components/Area/AreaChart.js.map +1 -1
  4. package/dist/charts/components/Bar/BarChart.cjs +2 -2
  5. package/dist/charts/components/Bar/BarChart.cjs.map +1 -1
  6. package/dist/charts/components/Bar/BarChart.d.ts +1 -1
  7. package/dist/charts/components/Bar/BarChart.js +2 -2
  8. package/dist/charts/components/Bar/BarChart.js.map +1 -1
  9. package/dist/charts/components/ChartWrapper.cjs.map +1 -1
  10. package/dist/charts/components/ChartWrapper.js.map +1 -1
  11. package/dist/charts/components/Composed/BarLineChart.cjs.map +1 -1
  12. package/dist/charts/components/Composed/BarLineChart.d.ts +2 -2
  13. package/dist/charts/components/Composed/BarLineChart.js.map +1 -1
  14. package/dist/charts/components/Donut/DonutChart.cjs.map +1 -1
  15. package/dist/charts/components/Donut/DonutChart.d.ts +1 -1
  16. package/dist/charts/components/Donut/DonutChart.js.map +1 -1
  17. package/dist/charts/components/LegacyDonut/ActiveShape.cjs +7 -5
  18. package/dist/charts/components/LegacyDonut/ActiveShape.cjs.map +1 -1
  19. package/dist/charts/components/LegacyDonut/ActiveShape.d.ts +6 -3
  20. package/dist/charts/components/LegacyDonut/ActiveShape.js +7 -5
  21. package/dist/charts/components/LegacyDonut/ActiveShape.js.map +1 -1
  22. package/dist/charts/components/LegacyDonut/CenteredLabel.cjs +1 -1
  23. package/dist/charts/components/LegacyDonut/CenteredLabel.cjs.map +1 -1
  24. package/dist/charts/components/LegacyDonut/CenteredLabel.js +1 -1
  25. package/dist/charts/components/LegacyDonut/CenteredLabel.js.map +1 -1
  26. package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs +119 -103
  27. package/dist/charts/components/LegacyDonut/LegacyDonutChart.cjs.map +1 -1
  28. package/dist/charts/components/LegacyDonut/LegacyDonutChart.d.ts +13 -2
  29. package/dist/charts/components/LegacyDonut/LegacyDonutChart.js +119 -103
  30. package/dist/charts/components/LegacyDonut/LegacyDonutChart.js.map +1 -1
  31. package/dist/charts/components/LegacyDonut/Legend.cjs +1 -1
  32. package/dist/charts/components/LegacyDonut/Legend.cjs.map +1 -1
  33. package/dist/charts/components/LegacyDonut/Legend.js +1 -1
  34. package/dist/charts/components/LegacyDonut/Legend.js.map +1 -1
  35. package/dist/charts/components/Legend.cjs +1 -1
  36. package/dist/charts/components/Legend.cjs.map +1 -1
  37. package/dist/charts/components/Legend.js +1 -1
  38. package/dist/charts/components/Legend.js.map +1 -1
  39. package/dist/charts/components/Line/LineChart.cjs.map +1 -1
  40. package/dist/charts/components/Line/LineChart.d.ts +3 -2
  41. package/dist/charts/components/Line/LineChart.js.map +1 -1
  42. package/dist/charts/components/Pie/PieChart.cjs +4 -4
  43. package/dist/charts/components/Pie/PieChart.cjs.map +1 -1
  44. package/dist/charts/components/Pie/PieChart.js +4 -4
  45. package/dist/charts/components/Pie/PieChart.js.map +1 -1
  46. package/dist/charts/components/Pie/util.cjs.map +1 -1
  47. package/dist/charts/components/Pie/util.d.ts +2 -1
  48. package/dist/charts/components/Pie/util.js.map +1 -1
  49. package/dist/charts/components/Tooltip.cjs.map +1 -1
  50. package/dist/charts/components/Tooltip.d.ts +2 -3
  51. package/dist/charts/components/Tooltip.js.map +1 -1
  52. package/dist/charts/components/types.d.ts +9 -5
  53. package/dist/charts/components/useChartData.cjs +5 -3
  54. package/dist/charts/components/useChartData.cjs.map +1 -1
  55. package/dist/charts/components/useChartData.d.ts +6 -2
  56. package/dist/charts/components/useChartData.js +5 -3
  57. package/dist/charts/components/useChartData.js.map +1 -1
  58. package/dist/charts/utils/color.cjs +6 -10
  59. package/dist/charts/utils/color.cjs.map +1 -1
  60. package/dist/charts/utils/color.js +6 -10
  61. package/dist/charts/utils/color.js.map +1 -1
  62. package/dist/charts/utils/common.cjs +10 -10
  63. package/dist/charts/utils/common.cjs.map +1 -1
  64. package/dist/charts/utils/common.d.ts +5 -6
  65. package/dist/charts/utils/common.js +10 -10
  66. package/dist/charts/utils/common.js.map +1 -1
  67. package/dist/components/AlertDialog/Context.cjs.map +1 -1
  68. package/dist/components/AlertDialog/Context.d.ts +1 -1
  69. package/dist/components/AlertDialog/Context.js.map +1 -1
  70. package/dist/components/Calendar/Calendar.cjs.map +1 -1
  71. package/dist/components/Calendar/Calendar.js.map +1 -1
  72. package/dist/components/Combobox/Combobox.cjs.map +1 -1
  73. package/dist/components/Combobox/Combobox.js.map +1 -1
  74. package/dist/components/Combobox/useCombobox.cjs +2 -4
  75. package/dist/components/Combobox/useCombobox.cjs.map +1 -1
  76. package/dist/components/Combobox/useCombobox.d.ts +1 -1
  77. package/dist/components/Combobox/useCombobox.js +2 -4
  78. package/dist/components/Combobox/useCombobox.js.map +1 -1
  79. package/dist/components/Datepicker/useDatepicker.cjs.map +1 -1
  80. package/dist/components/Datepicker/useDatepicker.js.map +1 -1
  81. package/dist/components/Dialog/Context.cjs.map +1 -1
  82. package/dist/components/Dialog/Context.d.ts +1 -1
  83. package/dist/components/Dialog/Context.js.map +1 -1
  84. package/dist/components/Dialog/components/Content.cjs.map +1 -1
  85. package/dist/components/Dialog/components/Content.js.map +1 -1
  86. package/dist/components/Drawer/components/Content.cjs +1 -1
  87. package/dist/components/Drawer/components/Content.cjs.map +1 -1
  88. package/dist/components/Drawer/components/Content.js +1 -1
  89. package/dist/components/Drawer/components/Content.js.map +1 -1
  90. package/dist/components/Drawer/useDrawerStack.cjs.map +1 -1
  91. package/dist/components/Drawer/useDrawerStack.js.map +1 -1
  92. package/dist/components/Hanger/Hanger.cjs.map +1 -1
  93. package/dist/components/Hanger/Hanger.js.map +1 -1
  94. package/dist/components/Header/Header.cjs +1 -1
  95. package/dist/components/Header/Header.cjs.map +1 -1
  96. package/dist/components/Header/Header.js +1 -1
  97. package/dist/components/Header/Header.js.map +1 -1
  98. package/dist/components/Header/components/PrimaryNavigation.cjs.map +1 -1
  99. package/dist/components/Header/components/PrimaryNavigation.js.map +1 -1
  100. package/dist/components/Icon/Icon.cjs.map +1 -1
  101. package/dist/components/Icon/Icon.js.map +1 -1
  102. package/dist/components/Layout/components/Sidebar.cjs +2 -1
  103. package/dist/components/Layout/components/Sidebar.cjs.map +1 -1
  104. package/dist/components/Layout/components/Sidebar.js +2 -1
  105. package/dist/components/Layout/components/Sidebar.js.map +1 -1
  106. package/dist/components/LegacyComponents/IconButton/IconButton.cjs.map +1 -1
  107. package/dist/components/LegacyComponents/IconButton/IconButton.js.map +1 -1
  108. package/dist/components/List/components/Toggle.cjs +0 -2
  109. package/dist/components/List/components/Toggle.cjs.map +1 -1
  110. package/dist/components/List/components/Toggle.js +0 -2
  111. package/dist/components/List/components/Toggle.js.map +1 -1
  112. package/dist/components/Listbox/Listbox.cjs +2 -5
  113. package/dist/components/Listbox/Listbox.cjs.map +1 -1
  114. package/dist/components/Listbox/Listbox.js +2 -5
  115. package/dist/components/Listbox/Listbox.js.map +1 -1
  116. package/dist/components/Listbox/useListbox.cjs +1 -1
  117. package/dist/components/Listbox/useListbox.cjs.map +1 -1
  118. package/dist/components/Listbox/useListbox.js +1 -1
  119. package/dist/components/Listbox/useListbox.js.map +1 -1
  120. package/dist/components/Listbox/useMultiListbox.cjs +1 -1
  121. package/dist/components/Listbox/useMultiListbox.cjs.map +1 -1
  122. package/dist/components/Listbox/useMultiListbox.js +1 -1
  123. package/dist/components/Listbox/useMultiListbox.js.map +1 -1
  124. package/dist/components/Listbox/util.cjs.map +1 -1
  125. package/dist/components/Listbox/util.js.map +1 -1
  126. package/dist/components/Menu/components/Content.cjs.map +1 -1
  127. package/dist/components/Menu/components/Content.js.map +1 -1
  128. package/dist/components/Menu/components/Item.cjs.map +1 -1
  129. package/dist/components/Menu/components/Item.d.ts +2 -2
  130. package/dist/components/Menu/components/Item.js.map +1 -1
  131. package/dist/components/Menu/components/Trigger.cjs +1 -5
  132. package/dist/components/Menu/components/Trigger.cjs.map +1 -1
  133. package/dist/components/Menu/components/Trigger.js +1 -5
  134. package/dist/components/Menu/components/Trigger.js.map +1 -1
  135. package/dist/components/Pagination/usePaginationShortcuts.cjs +0 -1
  136. package/dist/components/Pagination/usePaginationShortcuts.cjs.map +1 -1
  137. package/dist/components/Pagination/usePaginationShortcuts.js +0 -1
  138. package/dist/components/Pagination/usePaginationShortcuts.js.map +1 -1
  139. package/dist/components/Provider/Provider.cjs.map +1 -1
  140. package/dist/components/Provider/Provider.d.ts +1 -1
  141. package/dist/components/Provider/Provider.js.map +1 -1
  142. package/dist/components/SearchInput/SearchInput.cjs +0 -1
  143. package/dist/components/SearchInput/SearchInput.cjs.map +1 -1
  144. package/dist/components/SearchInput/SearchInput.js +0 -1
  145. package/dist/components/SearchInput/SearchInput.js.map +1 -1
  146. package/dist/components/SearchInput2/SearchInput2.cjs +0 -1
  147. package/dist/components/SearchInput2/SearchInput2.cjs.map +1 -1
  148. package/dist/components/SearchInput2/SearchInput2.js +0 -1
  149. package/dist/components/SearchInput2/SearchInput2.js.map +1 -1
  150. package/dist/components/Select2/Select2.cjs +6 -7
  151. package/dist/components/Select2/Select2.cjs.map +1 -1
  152. package/dist/components/Select2/Select2.js +6 -7
  153. package/dist/components/Select2/Select2.js.map +1 -1
  154. package/dist/components/Select2/components/Search.cjs +0 -1
  155. package/dist/components/Select2/components/Search.cjs.map +1 -1
  156. package/dist/components/Select2/components/Search.js +0 -1
  157. package/dist/components/Select2/components/Search.js.map +1 -1
  158. package/dist/components/Select2/components/Trigger.cjs +1 -1
  159. package/dist/components/Select2/components/Trigger.cjs.map +1 -1
  160. package/dist/components/Select2/components/Trigger.js +1 -1
  161. package/dist/components/Select2/components/Trigger.js.map +1 -1
  162. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs +1 -1
  163. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.cjs.map +1 -1
  164. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
  165. package/dist/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  166. package/dist/components/Table3/components/Columns/Cell/util.cjs.map +1 -1
  167. package/dist/components/Table3/components/Columns/Cell/util.js.map +1 -1
  168. package/dist/components/Table3/components/Editing/Alert.cjs +4 -4
  169. package/dist/components/Table3/components/Editing/Alert.cjs.map +1 -1
  170. package/dist/components/Table3/components/Editing/Alert.js +4 -4
  171. package/dist/components/Table3/components/Editing/Alert.js.map +1 -1
  172. package/dist/components/Table3/features/useEditingState.cjs +1 -1
  173. package/dist/components/Table3/features/useEditingState.cjs.map +1 -1
  174. package/dist/components/Table3/features/useEditingState.js +1 -1
  175. package/dist/components/Table3/features/useEditingState.js.map +1 -1
  176. package/dist/components/Table3/types.d.ts +2 -2
  177. package/dist/components/Table3/useTable3.cjs +8 -6
  178. package/dist/components/Table3/useTable3.cjs.map +1 -1
  179. package/dist/components/Table3/useTable3.js +8 -6
  180. package/dist/components/Table3/useTable3.js.map +1 -1
  181. package/dist/components/Table3/util/editing.cjs +1 -1
  182. package/dist/components/Table3/util/editing.cjs.map +1 -1
  183. package/dist/components/Table3/util/editing.d.ts +1 -1
  184. package/dist/components/Table3/util/editing.js +1 -1
  185. package/dist/components/Table3/util/editing.js.map +1 -1
  186. package/dist/hooks/useBoundaryOverflowDetection.cjs.map +1 -1
  187. package/dist/hooks/useBoundaryOverflowDetection.d.ts +1 -1
  188. package/dist/hooks/useBoundaryOverflowDetection.js.map +1 -1
  189. package/dist/hooks/useBoundingClientRectListener.cjs.map +1 -1
  190. package/dist/hooks/useBoundingClientRectListener.d.ts +1 -1
  191. package/dist/hooks/useBoundingClientRectListener.js.map +1 -1
  192. package/dist/hooks/useControlled.cjs +6 -10
  193. package/dist/hooks/useControlled.cjs.map +1 -1
  194. package/dist/hooks/useControlled.js +6 -10
  195. package/dist/hooks/useControlled.js.map +1 -1
  196. package/dist/hooks/useIsFormControl.cjs.map +1 -1
  197. package/dist/hooks/useIsFormControl.d.ts +1 -1
  198. package/dist/hooks/useIsFormControl.js.map +1 -1
  199. package/dist/hooks/useMergedRef.cjs.map +1 -1
  200. package/dist/hooks/useMergedRef.js.map +1 -1
  201. package/dist/hooks/usePrevious.cjs.map +1 -1
  202. package/dist/hooks/usePrevious.js.map +1 -1
  203. package/dist/primitives/Button.cjs.map +1 -1
  204. package/dist/primitives/Button.js.map +1 -1
  205. package/dist/primitives/Collection/components/Root.cjs +9 -16
  206. package/dist/primitives/Collection/components/Root.cjs.map +1 -1
  207. package/dist/primitives/Collection/components/Root.js +9 -16
  208. package/dist/primitives/Collection/components/Root.js.map +1 -1
  209. package/dist/primitives/Listbox2/components/Context.cjs.map +1 -1
  210. package/dist/primitives/Listbox2/components/Context.d.ts +1 -0
  211. package/dist/primitives/Listbox2/components/Context.js.map +1 -1
  212. package/dist/primitives/Listbox2/components/Option.cjs +8 -2
  213. package/dist/primitives/Listbox2/components/Option.cjs.map +1 -1
  214. package/dist/primitives/Listbox2/components/Option.js +8 -2
  215. package/dist/primitives/Listbox2/components/Option.js.map +1 -1
  216. package/dist/primitives/Listbox2/components/Root.cjs +3 -2
  217. package/dist/primitives/Listbox2/components/Root.cjs.map +1 -1
  218. package/dist/primitives/Listbox2/components/Root.js +3 -2
  219. package/dist/primitives/Listbox2/components/Root.js.map +1 -1
  220. package/dist/primitives/Sortable/components/Item.cjs +2 -4
  221. package/dist/primitives/Sortable/components/Item.cjs.map +1 -1
  222. package/dist/primitives/Sortable/components/Item.js +2 -4
  223. package/dist/primitives/Sortable/components/Item.js.map +1 -1
  224. package/dist/primitives/Table/Core/components/Body/Body.cjs +4 -4
  225. package/dist/primitives/Table/Core/components/Body/Body.cjs.map +1 -1
  226. package/dist/primitives/Table/Core/components/Body/Body.js +4 -4
  227. package/dist/primitives/Table/Core/components/Body/Body.js.map +1 -1
  228. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.cjs.map +1 -1
  229. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
  230. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.cjs.map +1 -1
  231. package/dist/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  232. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs +22 -16
  233. package/dist/primitives/Table/Core/components/Columns/Cell/util.cjs.map +1 -1
  234. package/dist/primitives/Table/Core/components/Columns/Cell/util.js +22 -16
  235. package/dist/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  236. package/dist/primitives/Table/Core/components/Footer/Summary.cjs.map +1 -1
  237. package/dist/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  238. package/dist/primitives/Table/Core/components/Header/util.cjs +4 -3
  239. package/dist/primitives/Table/Core/components/Header/util.cjs.map +1 -1
  240. package/dist/primitives/Table/Core/components/Header/util.js +4 -3
  241. package/dist/primitives/Table/Core/components/Header/util.js.map +1 -1
  242. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs +1 -1
  243. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.cjs.map +1 -1
  244. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +1 -1
  245. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
  246. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs +4 -2
  247. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.cjs.map +1 -1
  248. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +4 -2
  249. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  250. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.cjs.map +1 -1
  251. package/dist/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  252. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs +1 -1
  253. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.cjs.map +1 -1
  254. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js +1 -1
  255. package/dist/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  256. package/dist/primitives/Table/Core/features/useTableRef.cjs +7 -0
  257. package/dist/primitives/Table/Core/features/useTableRef.cjs.map +1 -1
  258. package/dist/primitives/Table/Core/features/useTableRef.js +7 -0
  259. package/dist/primitives/Table/Core/features/useTableRef.js.map +1 -1
  260. package/dist/primitives/Table/Core/features/useTableRenderer.cjs +2 -2
  261. package/dist/primitives/Table/Core/features/useTableRenderer.cjs.map +1 -1
  262. package/dist/primitives/Table/Core/features/useTableRenderer.js +2 -2
  263. package/dist/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  264. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs +2 -2
  265. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.cjs.map +1 -1
  266. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js +2 -2
  267. package/dist/primitives/Table/Core/features/useTableStyleColumnFreezing.js.map +1 -1
  268. package/dist/primitives/Table/Core/features/useTableStyleGrid.cjs.map +1 -1
  269. package/dist/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  270. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs +2 -4
  271. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.cjs.map +1 -1
  272. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.d.ts +2 -2
  273. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js +2 -4
  274. package/dist/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
  275. package/dist/primitives/Table/types.cjs.map +1 -1
  276. package/dist/primitives/Table/types.d.ts +6 -0
  277. package/dist/primitives/Table/types.js.map +1 -1
  278. package/dist/primitives/Table/useTableDataLoader2.cjs +36 -3
  279. package/dist/primitives/Table/useTableDataLoader2.cjs.map +1 -1
  280. package/dist/primitives/Table/useTableDataLoader2.d.ts +2 -1
  281. package/dist/primitives/Table/useTableDataLoader2.js +36 -3
  282. package/dist/primitives/Table/useTableDataLoader2.js.map +1 -1
  283. package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs +0 -1
  284. package/dist/primitives/Table/useTableManager/features/useTableRowActive.cjs.map +1 -1
  285. package/dist/primitives/Table/useTableManager/features/useTableRowActive.d.ts +1 -1
  286. package/dist/primitives/Table/useTableManager/features/useTableRowActive.js +0 -1
  287. package/dist/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  288. package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs +0 -2
  289. package/dist/primitives/Table/useTableManager/features/useTableRowClick.cjs.map +1 -1
  290. package/dist/primitives/Table/useTableManager/features/useTableRowClick.js +0 -2
  291. package/dist/primitives/Table/useTableManager/features/useTableRowClick.js.map +1 -1
  292. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs +0 -1
  293. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.cjs.map +1 -1
  294. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js +0 -1
  295. package/dist/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
  296. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs +10 -1
  297. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.cjs.map +1 -1
  298. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +3 -2
  299. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js +10 -1
  300. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  301. package/dist/primitives/Table/useTableManager/useTableManager.cjs +1 -5
  302. package/dist/primitives/Table/useTableManager/useTableManager.cjs.map +1 -1
  303. package/dist/primitives/Table/useTableManager/useTableManager.js +1 -5
  304. package/dist/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  305. package/dist/primitives/Table/useTableManager/util/dataTypes.cjs.map +1 -1
  306. package/dist/primitives/Table/useTableManager/util/dataTypes.d.ts +3 -3
  307. package/dist/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  308. package/dist/primitives/Table/useTableManager/util/filtering.cjs.map +1 -1
  309. package/dist/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  310. package/dist/primitives/Table/useTableManager/util/search.cjs +1 -1
  311. package/dist/primitives/Table/useTableManager/util/search.cjs.map +1 -1
  312. package/dist/primitives/Table/useTableManager/util/search.js +1 -1
  313. package/dist/primitives/Table/useTableManager/util/search.js.map +1 -1
  314. package/dist/primitives/Table/useTableManager/util/setup.cjs +3 -3
  315. package/dist/primitives/Table/useTableManager/util/setup.cjs.map +1 -1
  316. package/dist/primitives/Table/useTableManager/util/setup.js +3 -3
  317. package/dist/primitives/Table/useTableManager/util/setup.js.map +1 -1
  318. package/dist/types.cjs.map +1 -1
  319. package/dist/types.d.ts +1 -1
  320. package/dist/types.js.map +1 -1
  321. package/dist/utils/dataTypes.cjs +4 -4
  322. package/dist/utils/dataTypes.cjs.map +1 -1
  323. package/dist/utils/dataTypes.d.ts +1 -1
  324. package/dist/utils/dataTypes.js +4 -4
  325. package/dist/utils/dataTypes.js.map +1 -1
  326. package/dist/utils/date.cjs +14 -16
  327. package/dist/utils/date.cjs.map +1 -1
  328. package/dist/utils/date.js +14 -16
  329. package/dist/utils/date.js.map +1 -1
  330. package/dist/utils/debounce.cjs.map +1 -1
  331. package/dist/utils/debounce.d.ts +1 -1
  332. package/dist/utils/debounce.js.map +1 -1
  333. package/dist/utils/device.cjs +1 -1
  334. package/dist/utils/device.cjs.map +1 -1
  335. package/dist/utils/device.js +1 -1
  336. package/dist/utils/device.js.map +1 -1
  337. package/dist/utils/dom.cjs +1 -1
  338. package/dist/utils/dom.cjs.map +1 -1
  339. package/dist/utils/dom.d.ts +2 -2
  340. package/dist/utils/dom.js +1 -1
  341. package/dist/utils/dom.js.map +1 -1
  342. package/dist/utils/hooks/useDraggable.cjs.map +1 -1
  343. package/dist/utils/hooks/useDraggable.d.ts +9 -1
  344. package/dist/utils/hooks/useDraggable.js.map +1 -1
  345. package/dist/utils/hooks/useListKeyboardNavigation.cjs +1 -1
  346. package/dist/utils/hooks/useListKeyboardNavigation.cjs.map +1 -1
  347. package/dist/utils/hooks/useListKeyboardNavigation.js +1 -1
  348. package/dist/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  349. package/dist/utils/hooks/useListScrollTo.cjs.map +1 -1
  350. package/dist/utils/hooks/useListScrollTo.d.ts +4 -1
  351. package/dist/utils/hooks/useListScrollTo.js.map +1 -1
  352. package/dist/utils/hooks/useOnClickOutside.cjs.map +1 -1
  353. package/dist/utils/hooks/useOnClickOutside.d.ts +1 -1
  354. package/dist/utils/hooks/useOnClickOutside.js.map +1 -1
  355. package/dist/utils/hooks/useTruncated.cjs.map +1 -1
  356. package/dist/utils/hooks/useTruncated.d.ts +2 -1
  357. package/dist/utils/hooks/useTruncated.js.map +1 -1
  358. package/dist/utils/mergeRefs.cjs.map +1 -1
  359. package/dist/utils/mergeRefs.d.ts +1 -1
  360. package/dist/utils/mergeRefs.js.map +1 -1
  361. package/dist/utils/storyutils.d.ts +1 -3
  362. package/package.json +4 -5
  363. package/plugins/tailwindcss-group-peer.js +1 -1
  364. package/scripts/stylelint-plugin/radius.mjs +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Summary.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nexport type FooterSummaryProps<TType = unknown> = {\n table: ReactTable<TType>;\n};\n\nexport function Summary<TType = unknown>(props: FooterSummaryProps<TType>) {\n const { table } = props;\n const { locale, texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const length = tableMeta.length;\n const currentLength = table.getRowModel().rows.length;\n\n let label;\n let count;\n\n // row selection\n // use table state and not the selected row model because of the way server loading works\n const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;\n\n if (rowsSelectedLength > 0) {\n label = texts.table.footer.summary.selected;\n count = (\n <>\n <strong>{new Intl.NumberFormat(locale).format(rowsSelectedLength)}</strong>&nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong>{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else if (\n !tableMeta.server.isEnabled &&\n (table.getState().columnFilters?.length || // filtered data\n (!!table.getState().globalFilter && table.options.enableGlobalFilter))\n ) {\n label = texts.table.footer.summary.records;\n count = (\n <>\n <strong data-taco=\"table-footer-current-count\">{new Intl.NumberFormat(locale).format(currentLength)}</strong>\n &nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else {\n label = texts.table.footer.summary.records;\n count = <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>;\n }\n\n return (\n <div\n className=\"sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]\"\n data-taco=\"table-footer-summary\">\n {label}&nbsp;{count}\n </div>\n );\n}\n"],"names":["useLocalization"],"mappings":";;;;AASO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAUA,6BAAA;AAC1B,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,gBAAgB,MAAM,YAAA,EAAc,KAAK;AAE/C,MAAI;AACJ,MAAI;AAIJ,QAAM,qBAAqB,OAAO,KAAK,MAAM,SAAA,EAAW,YAAY,EAAE;AAEtE,MAAI,qBAAqB,GAAG;AACxB,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC1D;AAAA,EAER,WACI,CAAC,UAAU,OAAO,cACjB,MAAM,WAAW,eAAe;AAAA,EAC5B,CAAC,CAAC,MAAM,SAAA,EAAW,gBAAgB,MAAM,QAAQ,qBACxD;AACE,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,YAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC/F;AAAA,EAER,OAAO;AACH,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YAAQ,sBAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;;"}
1
+ {"version":3,"file":"Summary.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nexport type FooterSummaryProps<TType = unknown> = {\n table: ReactTable<TType>;\n};\n\nexport function Summary<TType = unknown>(props: FooterSummaryProps<TType>) {\n const { table } = props;\n const { locale, texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const length = tableMeta.length;\n const currentLength = table.getRowModel().rows.length;\n\n let label;\n let count;\n\n // row selection\n // use table state and not the selected row model because of the way server loading works\n const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;\n\n if (rowsSelectedLength > 0) {\n label = texts.table.footer.summary.selected;\n count = (\n <>\n <strong>{new Intl.NumberFormat(locale).format(rowsSelectedLength)}</strong>&nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong>{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else if (\n !tableMeta.server.isEnabled &&\n (table.getState().columnFilters?.length ||\n // filtered data\n (!!table.getState().globalFilter && table.options.enableGlobalFilter))\n ) {\n label = texts.table.footer.summary.records;\n count = (\n <>\n <strong data-taco=\"table-footer-current-count\">{new Intl.NumberFormat(locale).format(currentLength)}</strong>\n &nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else {\n label = texts.table.footer.summary.records;\n count = <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>;\n }\n\n return (\n <div\n className=\"sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]\"\n data-taco=\"table-footer-summary\">\n {label}&nbsp;{count}\n </div>\n );\n}\n"],"names":["useLocalization"],"mappings":";;;;AASO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAUA,6BAAA;AAC1B,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,gBAAgB,MAAM,YAAA,EAAc,KAAK;AAE/C,MAAI;AACJ,MAAI;AAIJ,QAAM,qBAAqB,OAAO,KAAK,MAAM,SAAA,EAAW,YAAY,EAAE;AAEtE,MAAI,qBAAqB,GAAG;AACxB,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC1D;AAAA,EAER,WACI,CAAC,UAAU,OAAO,cACjB,MAAM,WAAW,eAAe;AAAA,EAE5B,CAAC,CAAC,MAAM,SAAA,EAAW,gBAAgB,MAAM,QAAQ,qBACxD;AACE,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACI,sBAAA,cAAA,MAAA,UAAA,MACI,sBAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClC,sBAAA,cAAC,YAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC/F;AAAA,EAER,OAAO;AACH,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YAAQ,sBAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACI,sBAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Summary.js","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nexport type FooterSummaryProps<TType = unknown> = {\n table: ReactTable<TType>;\n};\n\nexport function Summary<TType = unknown>(props: FooterSummaryProps<TType>) {\n const { table } = props;\n const { locale, texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const length = tableMeta.length;\n const currentLength = table.getRowModel().rows.length;\n\n let label;\n let count;\n\n // row selection\n // use table state and not the selected row model because of the way server loading works\n const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;\n\n if (rowsSelectedLength > 0) {\n label = texts.table.footer.summary.selected;\n count = (\n <>\n <strong>{new Intl.NumberFormat(locale).format(rowsSelectedLength)}</strong>&nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong>{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else if (\n !tableMeta.server.isEnabled &&\n (table.getState().columnFilters?.length || // filtered data\n (!!table.getState().globalFilter && table.options.enableGlobalFilter))\n ) {\n label = texts.table.footer.summary.records;\n count = (\n <>\n <strong data-taco=\"table-footer-current-count\">{new Intl.NumberFormat(locale).format(currentLength)}</strong>\n &nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else {\n label = texts.table.footer.summary.records;\n count = <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>;\n }\n\n return (\n <div\n className=\"sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]\"\n data-taco=\"table-footer-summary\">\n {label}&nbsp;{count}\n </div>\n );\n}\n"],"names":["React"],"mappings":";;AASO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAU,gBAAA;AAC1B,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,gBAAgB,MAAM,YAAA,EAAc,KAAK;AAE/C,MAAI;AACJ,MAAI;AAIJ,QAAM,qBAAqB,OAAO,KAAK,MAAM,SAAA,EAAW,YAAY,EAAE;AAEtE,MAAI,qBAAqB,GAAG;AACxB,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC1D;AAAA,EAER,WACI,CAAC,UAAU,OAAO,cACjB,MAAM,WAAW,eAAe;AAAA,EAC5B,CAAC,CAAC,MAAM,SAAA,EAAW,gBAAgB,MAAM,QAAQ,qBACxD;AACE,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,cAAC,YAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC/F;AAAA,EAER,OAAO;AACH,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YAAQA,+BAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACIA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;"}
1
+ {"version":3,"file":"Summary.js","sources":["../../../../../../src/primitives/Table/Core/components/Footer/Summary.tsx"],"sourcesContent":["import type { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { useLocalization } from '@/components';\n\nexport type FooterSummaryProps<TType = unknown> = {\n table: ReactTable<TType>;\n};\n\nexport function Summary<TType = unknown>(props: FooterSummaryProps<TType>) {\n const { table } = props;\n const { locale, texts } = useLocalization();\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const length = tableMeta.length;\n const currentLength = table.getRowModel().rows.length;\n\n let label;\n let count;\n\n // row selection\n // use table state and not the selected row model because of the way server loading works\n const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;\n\n if (rowsSelectedLength > 0) {\n label = texts.table.footer.summary.selected;\n count = (\n <>\n <strong>{new Intl.NumberFormat(locale).format(rowsSelectedLength)}</strong>&nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong>{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else if (\n !tableMeta.server.isEnabled &&\n (table.getState().columnFilters?.length ||\n // filtered data\n (!!table.getState().globalFilter && table.options.enableGlobalFilter))\n ) {\n label = texts.table.footer.summary.records;\n count = (\n <>\n <strong data-taco=\"table-footer-current-count\">{new Intl.NumberFormat(locale).format(currentLength)}</strong>\n &nbsp;\n {texts.table.footer.summary.count}&nbsp;\n <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>\n </>\n );\n } else {\n label = texts.table.footer.summary.records;\n count = <strong data-taco=\"table-footer-total-count\">{new Intl.NumberFormat(locale).format(length)}</strong>;\n }\n\n return (\n <div\n className=\"sticky left-0 z-20 flex h-full w-fit items-center whitespace-nowrap bg-white pr-1 shadow-[12px_0px_6px_white]\"\n data-taco=\"table-footer-summary\">\n {label}&nbsp;{count}\n </div>\n );\n}\n"],"names":["React"],"mappings":";;AASO,SAAS,QAAyB,OAAkC;AACvE,QAAM,EAAE,UAAU;AAClB,QAAM,EAAE,QAAQ,MAAA,IAAU,gBAAA;AAC1B,QAAM,YAAY,MAAM,QAAQ;AAChC,QAAM,SAAS,UAAU;AACzB,QAAM,gBAAgB,MAAM,YAAA,EAAc,KAAK;AAE/C,MAAI;AACJ,MAAI;AAIJ,QAAM,qBAAqB,OAAO,KAAK,MAAM,SAAA,EAAW,YAAY,EAAE;AAEtE,MAAI,qBAAqB,GAAG;AACxB,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,kBAAkB,CAAE,GAAS,KAC1E,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,cAAC,UAAA,MAAQ,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC1D;AAAA,EAER,WACI,CAAC,UAAU,OAAO,cACjB,MAAM,WAAW,eAAe;AAAA,EAE5B,CAAC,CAAC,MAAM,SAAA,EAAW,gBAAgB,MAAM,QAAQ,qBACxD;AACE,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YACIA,+BAAA,cAAAA,eAAA,UAAA,MACIA,+BAAA,cAAC,UAAA,EAAO,aAAU,gCAA8B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,aAAa,CAAE,GAAS,KAE5G,MAAM,MAAM,OAAO,QAAQ,OAAM,KAClCA,+BAAA,cAAC,YAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE,CAC/F;AAAA,EAER,OAAO;AACH,YAAQ,MAAM,MAAM,OAAO,QAAQ;AACnC,YAAQA,+BAAA,cAAC,UAAA,EAAO,aAAU,2BAAA,GAA4B,IAAI,KAAK,aAAa,MAAM,EAAE,OAAO,MAAM,CAAE;AAAA,EACvG;AAEA,SACIA,+BAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAU;AAAA,MACV,aAAU;AAAA,IAAA;AAAA,IACT;AAAA,IAAM;AAAA,IAAO;AAAA,EAAA;AAG1B;"}
@@ -13,11 +13,12 @@ function useSetInitialColumnSizing(id, defaultWidth, width, element, canMeasureS
13
13
  [id]: element.getBoundingClientRect().width
14
14
  }));
15
15
  if (defaultWidth === "grow") {
16
- requestAnimationFrame(setWidth);
17
- } else {
18
- setWidth();
16
+ const id2 = requestAnimationFrame(setWidth);
17
+ return () => cancelAnimationFrame(id2);
19
18
  }
19
+ setWidth();
20
20
  }
21
+ return void 0;
21
22
  }, [element, canMeasureSize, width]);
22
23
  }
23
24
  function getIsPinned(header) {
@@ -1 +1 @@
1
- {"version":3,"file":"util.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Header/util.ts"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableColumnWidth } from '../../../types';\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\n\nexport function useSetInitialColumnSizing(\n id: string,\n defaultWidth: TableColumnWidth | undefined,\n width: TableColumnWidth | undefined,\n element: HTMLTableCellElement | null,\n canMeasureSize: boolean,\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n) {\n React.useLayoutEffect(() => {\n // Skip if column already has a width set\n if (width !== undefined) {\n return;\n }\n\n // columns must set a pixel width...\n // otherwise when scrolling through the table, the column widths adjust based on the content\n // of the column, this is because to the virtualisation mounting new rows and unmounting old ones\n if (canMeasureSize && element && !Number.isInteger(width) && !isInternalColumn(id)) {\n const setWidth = () =>\n setColumnSizing(sizes => ({\n ...sizes,\n [id]: element.getBoundingClientRect().width,\n }));\n\n // grow columns need to wait for auto layout to run, otherwise they register the incorrect size\n if (defaultWidth === 'grow') {\n requestAnimationFrame(setWidth);\n } else {\n setWidth();\n }\n }\n }, [element, canMeasureSize, width]);\n}\n\nexport function getIsPinned<TType = unknown>(\n header: ReactTableHeader<TType, unknown>\n): ReactTableColumnPinningPosition | undefined {\n // TODO: Is there a native function that does this check for groups?\n return header.subHeaders?.length\n ? header.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : header.column.getIsPinned();\n}\n"],"names":["isInternalColumn"],"mappings":";;;;AAWO,SAAS,0BACZ,IACA,cACA,OACA,SACA,gBACA,iBACF;AACE,QAAM,gBAAgB,MAAM;AAExB,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAKA,QAAI,kBAAkB,WAAW,CAAC,OAAO,UAAU,KAAK,KAAK,CAACA,yBAAiB,EAAE,GAAG;AAChF,YAAM,WAAW,MACb,gBAAgB,CAAA,WAAU;AAAA,QACtB,GAAG;AAAA,QACH,CAAC,EAAE,GAAG,QAAQ,wBAAwB;AAAA,MAAA,EACxC;AAGN,UAAI,iBAAiB,QAAQ;AACzB,8BAAsB,QAAQ;AAAA,MAClC,OAAO;AACH,iBAAA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,SAAS,gBAAgB,KAAK,CAAC;AACvC;AAEO,SAAS,YACZ,QAC2C;AAE3C,SAAO,OAAO,YAAY,SACpB,OAAO,WAAW,KAAK,CAAA,MAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,gBAC5D,OAAO,OAAO,YAAA;AACxB;;;"}
1
+ {"version":3,"file":"util.cjs","sources":["../../../../../../src/primitives/Table/Core/components/Header/util.ts"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableColumnWidth } from '../../../types';\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\n\nexport function useSetInitialColumnSizing(\n id: string,\n defaultWidth: TableColumnWidth | undefined,\n width: TableColumnWidth | undefined,\n element: HTMLTableCellElement | null,\n canMeasureSize: boolean,\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n) {\n React.useLayoutEffect(() => {\n // Skip if column already has a width set\n if (width !== undefined) {\n return;\n }\n\n // columns must set a pixel width...\n // otherwise when scrolling through the table, the column widths adjust based on the content\n // of the column, this is because to the virtualisation mounting new rows and unmounting old ones\n if (canMeasureSize && element && !Number.isInteger(width) && !isInternalColumn(id)) {\n const setWidth = () =>\n setColumnSizing(sizes => ({\n ...sizes,\n [id]: element.getBoundingClientRect().width,\n }));\n\n // grow columns need to wait for auto layout to run, otherwise they register the incorrect size\n if (defaultWidth === 'grow') {\n const id = requestAnimationFrame(setWidth);\n return () => cancelAnimationFrame(id);\n }\n\n setWidth();\n }\n\n return undefined;\n }, [element, canMeasureSize, width]);\n}\n\nexport function getIsPinned<TType = unknown>(\n header: ReactTableHeader<TType, unknown>\n): ReactTableColumnPinningPosition | undefined {\n // TODO: Is there a native function that does this check for groups?\n return header.subHeaders?.length\n ? header.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : header.column.getIsPinned();\n}\n"],"names":["isInternalColumn","id"],"mappings":";;;;AAWO,SAAS,0BACZ,IACA,cACA,OACA,SACA,gBACA,iBACF;AACE,QAAM,gBAAgB,MAAM;AAExB,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAKA,QAAI,kBAAkB,WAAW,CAAC,OAAO,UAAU,KAAK,KAAK,CAACA,yBAAiB,EAAE,GAAG;AAChF,YAAM,WAAW,MACb,gBAAgB,CAAA,WAAU;AAAA,QACtB,GAAG;AAAA,QACH,CAAC,EAAE,GAAG,QAAQ,wBAAwB;AAAA,MAAA,EACxC;AAGN,UAAI,iBAAiB,QAAQ;AACzB,cAAMC,MAAK,sBAAsB,QAAQ;AACzC,eAAO,MAAM,qBAAqBA,GAAE;AAAA,MACxC;AAEA,eAAA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,SAAS,gBAAgB,KAAK,CAAC;AACvC;AAEO,SAAS,YACZ,QAC2C;AAE3C,SAAO,OAAO,YAAY,SACpB,OAAO,WAAW,KAAK,CAAA,MAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,gBAC5D,OAAO,OAAO,YAAA;AACxB;;;"}
@@ -11,11 +11,12 @@ function useSetInitialColumnSizing(id, defaultWidth, width, element, canMeasureS
11
11
  [id]: element.getBoundingClientRect().width
12
12
  }));
13
13
  if (defaultWidth === "grow") {
14
- requestAnimationFrame(setWidth);
15
- } else {
16
- setWidth();
14
+ const id2 = requestAnimationFrame(setWidth);
15
+ return () => cancelAnimationFrame(id2);
17
16
  }
17
+ setWidth();
18
18
  }
19
+ return void 0;
19
20
  }, [element, canMeasureSize, width]);
20
21
  }
21
22
  function getIsPinned(header) {
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../../../src/primitives/Table/Core/components/Header/util.ts"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableColumnWidth } from '../../../types';\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\n\nexport function useSetInitialColumnSizing(\n id: string,\n defaultWidth: TableColumnWidth | undefined,\n width: TableColumnWidth | undefined,\n element: HTMLTableCellElement | null,\n canMeasureSize: boolean,\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n) {\n React.useLayoutEffect(() => {\n // Skip if column already has a width set\n if (width !== undefined) {\n return;\n }\n\n // columns must set a pixel width...\n // otherwise when scrolling through the table, the column widths adjust based on the content\n // of the column, this is because to the virtualisation mounting new rows and unmounting old ones\n if (canMeasureSize && element && !Number.isInteger(width) && !isInternalColumn(id)) {\n const setWidth = () =>\n setColumnSizing(sizes => ({\n ...sizes,\n [id]: element.getBoundingClientRect().width,\n }));\n\n // grow columns need to wait for auto layout to run, otherwise they register the incorrect size\n if (defaultWidth === 'grow') {\n requestAnimationFrame(setWidth);\n } else {\n setWidth();\n }\n }\n }, [element, canMeasureSize, width]);\n}\n\nexport function getIsPinned<TType = unknown>(\n header: ReactTableHeader<TType, unknown>\n): ReactTableColumnPinningPosition | undefined {\n // TODO: Is there a native function that does this check for groups?\n return header.subHeaders?.length\n ? header.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : header.column.getIsPinned();\n}\n"],"names":["React"],"mappings":";;AAWO,SAAS,0BACZ,IACA,cACA,OACA,SACA,gBACA,iBACF;AACEA,iBAAM,gBAAgB,MAAM;AAExB,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAKA,QAAI,kBAAkB,WAAW,CAAC,OAAO,UAAU,KAAK,KAAK,CAAC,iBAAiB,EAAE,GAAG;AAChF,YAAM,WAAW,MACb,gBAAgB,CAAA,WAAU;AAAA,QACtB,GAAG;AAAA,QACH,CAAC,EAAE,GAAG,QAAQ,wBAAwB;AAAA,MAAA,EACxC;AAGN,UAAI,iBAAiB,QAAQ;AACzB,8BAAsB,QAAQ;AAAA,MAClC,OAAO;AACH,iBAAA;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,SAAS,gBAAgB,KAAK,CAAC;AACvC;AAEO,SAAS,YACZ,QAC2C;AAE3C,SAAO,OAAO,YAAY,SACpB,OAAO,WAAW,KAAK,CAAA,MAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,gBAC5D,OAAO,OAAO,YAAA;AACxB;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../../../src/primitives/Table/Core/components/Header/util.ts"],"sourcesContent":["import type {\n Header as ReactTableHeader,\n ColumnPinningPosition as ReactTableColumnPinningPosition,\n Updater,\n ColumnSizingState,\n} from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableColumnWidth } from '../../../types';\nimport { isInternalColumn } from '../../../useTableManager/util/columns';\n\nexport function useSetInitialColumnSizing(\n id: string,\n defaultWidth: TableColumnWidth | undefined,\n width: TableColumnWidth | undefined,\n element: HTMLTableCellElement | null,\n canMeasureSize: boolean,\n setColumnSizing: (updater: Updater<ColumnSizingState>) => void\n) {\n React.useLayoutEffect(() => {\n // Skip if column already has a width set\n if (width !== undefined) {\n return;\n }\n\n // columns must set a pixel width...\n // otherwise when scrolling through the table, the column widths adjust based on the content\n // of the column, this is because to the virtualisation mounting new rows and unmounting old ones\n if (canMeasureSize && element && !Number.isInteger(width) && !isInternalColumn(id)) {\n const setWidth = () =>\n setColumnSizing(sizes => ({\n ...sizes,\n [id]: element.getBoundingClientRect().width,\n }));\n\n // grow columns need to wait for auto layout to run, otherwise they register the incorrect size\n if (defaultWidth === 'grow') {\n const id = requestAnimationFrame(setWidth);\n return () => cancelAnimationFrame(id);\n }\n\n setWidth();\n }\n\n return undefined;\n }, [element, canMeasureSize, width]);\n}\n\nexport function getIsPinned<TType = unknown>(\n header: ReactTableHeader<TType, unknown>\n): ReactTableColumnPinningPosition | undefined {\n // TODO: Is there a native function that does this check for groups?\n return header.subHeaders?.length\n ? header.subHeaders.find(x => x.column.getIsPinned())?.column.getIsPinned()\n : header.column.getIsPinned();\n}\n"],"names":["React","id"],"mappings":";;AAWO,SAAS,0BACZ,IACA,cACA,OACA,SACA,gBACA,iBACF;AACEA,iBAAM,gBAAgB,MAAM;AAExB,QAAI,UAAU,QAAW;AACrB;AAAA,IACJ;AAKA,QAAI,kBAAkB,WAAW,CAAC,OAAO,UAAU,KAAK,KAAK,CAAC,iBAAiB,EAAE,GAAG;AAChF,YAAM,WAAW,MACb,gBAAgB,CAAA,WAAU;AAAA,QACtB,GAAG;AAAA,QACH,CAAC,EAAE,GAAG,QAAQ,wBAAwB;AAAA,MAAA,EACxC;AAGN,UAAI,iBAAiB,QAAQ;AACzB,cAAMC,MAAK,sBAAsB,QAAQ;AACzC,eAAO,MAAM,qBAAqBA,GAAE;AAAA,MACxC;AAEA,eAAA;AAAA,IACJ;AAEA,WAAO;AAAA,EACX,GAAG,CAAC,SAAS,gBAAgB,KAAK,CAAC;AACvC;AAEO,SAAS,YACZ,QAC2C;AAE3C,SAAO,OAAO,YAAY,SACpB,OAAO,WAAW,KAAK,CAAA,MAAK,EAAE,OAAO,YAAA,CAAa,GAAG,OAAO,gBAC5D,OAAO,OAAO,YAAA;AACxB;"}
@@ -27,7 +27,7 @@ function Filters(props) {
27
27
  tooltip: /* @__PURE__ */ React.createElement(React.Fragment, null, texts.table.filters.tooltip, /* @__PURE__ */ React.createElement(Shortcut.Shortcut, { className: "ml-2", keys: shortcut }))
28
28
  };
29
29
  React.useEffect(() => {
30
- const emptyFilter = columnFilters.find(util.isEmptyFilter);
30
+ const emptyFilter = columnFilters.find((filter) => util.isEmptyFilter(filter));
31
31
  if (emptyFilter) {
32
32
  ref.current?.click();
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { PopoverProps } from '@/components';\nimport { Icon, LegacyButton, LegacyIconButton, Shortcut, useLocalization } from '@/components';\nimport { useIsLargeScreen } from '@/hooks/useIsLargeScreen';\n\nimport type { TableFilter } from '../../../../../types';\n\nimport { ManageFiltersPopover } from './ManageFiltersPopover';\nimport { isEmptyFilter } from './util';\n\nexport type FiltersProps<TType = unknown> = {\n length: number;\n tableId: string;\n table: ReactTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { length, tableId, table } = props;\n const { texts } = useLocalization();\n const isLargeScreen = useIsLargeScreen();\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const appliedFilters = columnFilters.filter(f => !isEmptyFilter(f));\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const shortcut = { key: 'f', meta: true, shift: true };\n\n const buttonProps = {\n 'aria-label': texts.table.filters.tooltip,\n className: appliedFilters.length ? '!bg-blue-100 !text-blue-900' : undefined,\n 'data-taco': `${tableId}-toolbar-filters`,\n popover: (popoverProps: PopoverProps) => <ManageFiltersPopover {...popoverProps} length={length} table={table} />,\n shortcut,\n ref,\n tooltip: (\n <>\n {texts.table.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n ),\n };\n\n React.useEffect(() => {\n const emptyFilter = columnFilters.find(isEmptyFilter);\n\n // we set an empty filter when adding a filter through a column header.\n if (emptyFilter) {\n ref.current?.click();\n }\n }, [columnFilters]);\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <LegacyIconButton {...buttonProps} icon=\"filter\" />;\n }\n\n return (\n <LegacyButton {...buttonProps}>\n <Icon className={isLargeScreen ? undefined : '-mr-1.5'} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </LegacyButton>\n );\n}\n"],"names":["useLocalization","useIsLargeScreen","isEmptyFilter","ManageFiltersPopover","Shortcut","LegacyIconButton","LegacyButton","Icon"],"mappings":";;;;;;;;;;;AAkBO,SAAS,QAAyB,OAA4B;AACjE,QAAM,EAAE,QAAQ,SAAS,MAAA,IAAU;AACnC,QAAM,EAAE,MAAA,IAAUA,6BAAA;AAClB,QAAM,gBAAgBC,iBAAAA,iBAAA;AACtB,QAAM,gBAAgB,MAAM,SAAA,EAAW;AACvC,QAAM,iBAAiB,cAAc,OAAO,OAAK,CAACC,KAAAA,cAAc,CAAC,CAAC;AAClE,QAAM,MAAM,MAAM,OAA0B,IAAI;AAEhD,QAAM,WAAW,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,KAAA;AAEhD,QAAM,cAAc;AAAA,IAChB,cAAc,MAAM,MAAM,QAAQ;AAAA,IAClC,WAAW,eAAe,SAAS,gCAAgC;AAAA,IACnE,aAAa,GAAG,OAAO;AAAA,IACvB,SAAS,CAAC,iBAA+B,sBAAA,cAACC,6CAAsB,GAAG,cAAc,QAAgB,OAAc;AAAA,IAC/G;AAAA,IACA;AAAA,IACA,SACI,sBAAA,cAAA,MAAA,UAAA,MACK,MAAM,MAAM,QAAQ,SACrB,sBAAA,cAACC,mBAAA,EAAS,WAAU,QAAO,MAAM,UAAU,CAC/C;AAAA,EAAA;AAIR,QAAM,UAAU,MAAM;AAClB,UAAM,cAAc,cAAc,KAAKF,kBAAa;AAGpD,QAAI,aAAa;AACb,UAAI,SAAS,MAAA;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,CAAC,iBAAiB,CAAC,eAAe,QAAQ;AAC1C,WAAO,sBAAA,cAACG,WAAAA,kBAAA,EAAkB,GAAG,aAAa,MAAK,UAAS;AAAA,EAC5D;AAEA,SACI,sBAAA,cAACC,OAAAA,cAAA,EAAc,GAAG,YAAA,GACd,sBAAA,cAACC,KAAAA,MAAA,EAAK,WAAW,gBAAgB,SAAY,WAAW,MAAM,eAAe,SAAS,iBAAiB,SAAA,CAAU,GAChH,gBAAgB,MAAM,MAAM,QAAQ,SAAS,IAC7C,eAAe,SAAS,IAAI,eAAe,MAAM,MAAM,EAC5D;AAER;;"}
1
+ {"version":3,"file":"Filters.cjs","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { PopoverProps } from '@/components';\nimport { Icon, LegacyButton, LegacyIconButton, Shortcut, useLocalization } from '@/components';\nimport { useIsLargeScreen } from '@/hooks/useIsLargeScreen';\n\nimport type { TableFilter } from '../../../../../types';\n\nimport { ManageFiltersPopover } from './ManageFiltersPopover';\nimport { isEmptyFilter } from './util';\n\nexport type FiltersProps<TType = unknown> = {\n length: number;\n tableId: string;\n table: ReactTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { length, tableId, table } = props;\n const { texts } = useLocalization();\n const isLargeScreen = useIsLargeScreen();\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const appliedFilters = columnFilters.filter(f => !isEmptyFilter(f));\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const shortcut = { key: 'f', meta: true, shift: true };\n\n const buttonProps = {\n 'aria-label': texts.table.filters.tooltip,\n className: appliedFilters.length ? '!bg-blue-100 !text-blue-900' : undefined,\n 'data-taco': `${tableId}-toolbar-filters`,\n popover: (popoverProps: PopoverProps) => <ManageFiltersPopover {...popoverProps} length={length} table={table} />,\n shortcut,\n ref,\n tooltip: (\n <>\n {texts.table.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n ),\n };\n\n React.useEffect(() => {\n const emptyFilter = columnFilters.find(filter => isEmptyFilter(filter));\n\n // we set an empty filter when adding a filter through a column header.\n if (emptyFilter) {\n ref.current?.click();\n }\n }, [columnFilters]);\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <LegacyIconButton {...buttonProps} icon=\"filter\" />;\n }\n\n return (\n <LegacyButton {...buttonProps}>\n <Icon className={isLargeScreen ? undefined : '-mr-1.5'} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </LegacyButton>\n );\n}\n"],"names":["useLocalization","useIsLargeScreen","isEmptyFilter","ManageFiltersPopover","Shortcut","LegacyIconButton","LegacyButton","Icon"],"mappings":";;;;;;;;;;;AAkBO,SAAS,QAAyB,OAA4B;AACjE,QAAM,EAAE,QAAQ,SAAS,MAAA,IAAU;AACnC,QAAM,EAAE,MAAA,IAAUA,6BAAA;AAClB,QAAM,gBAAgBC,iBAAAA,iBAAA;AACtB,QAAM,gBAAgB,MAAM,SAAA,EAAW;AACvC,QAAM,iBAAiB,cAAc,OAAO,OAAK,CAACC,KAAAA,cAAc,CAAC,CAAC;AAClE,QAAM,MAAM,MAAM,OAA0B,IAAI;AAEhD,QAAM,WAAW,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,KAAA;AAEhD,QAAM,cAAc;AAAA,IAChB,cAAc,MAAM,MAAM,QAAQ;AAAA,IAClC,WAAW,eAAe,SAAS,gCAAgC;AAAA,IACnE,aAAa,GAAG,OAAO;AAAA,IACvB,SAAS,CAAC,iBAA+B,sBAAA,cAACC,6CAAsB,GAAG,cAAc,QAAgB,OAAc;AAAA,IAC/G;AAAA,IACA;AAAA,IACA,SACI,sBAAA,cAAA,MAAA,UAAA,MACK,MAAM,MAAM,QAAQ,SACrB,sBAAA,cAACC,mBAAA,EAAS,WAAU,QAAO,MAAM,UAAU,CAC/C;AAAA,EAAA;AAIR,QAAM,UAAU,MAAM;AAClB,UAAM,cAAc,cAAc,KAAK,CAAA,WAAUF,KAAAA,cAAc,MAAM,CAAC;AAGtE,QAAI,aAAa;AACb,UAAI,SAAS,MAAA;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,CAAC,iBAAiB,CAAC,eAAe,QAAQ;AAC1C,WAAO,sBAAA,cAACG,WAAAA,kBAAA,EAAkB,GAAG,aAAa,MAAK,UAAS;AAAA,EAC5D;AAEA,SACI,sBAAA,cAACC,OAAAA,cAAA,EAAc,GAAG,YAAA,GACd,sBAAA,cAACC,KAAAA,MAAA,EAAK,WAAW,gBAAgB,SAAY,WAAW,MAAM,eAAe,SAAS,iBAAiB,SAAA,CAAU,GAChH,gBAAgB,MAAM,MAAM,QAAQ,SAAS,IAC7C,eAAe,SAAS,IAAI,eAAe,MAAM,MAAM,EAC5D;AAER;;"}
@@ -25,7 +25,7 @@ function Filters(props) {
25
25
  tooltip: /* @__PURE__ */ React__default.createElement(React__default.Fragment, null, texts.table.filters.tooltip, /* @__PURE__ */ React__default.createElement(Shortcut, { className: "ml-2", keys: shortcut }))
26
26
  };
27
27
  React__default.useEffect(() => {
28
- const emptyFilter = columnFilters.find(isEmptyFilter);
28
+ const emptyFilter = columnFilters.find((filter) => isEmptyFilter(filter));
29
29
  if (emptyFilter) {
30
30
  ref.current?.click();
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { PopoverProps } from '@/components';\nimport { Icon, LegacyButton, LegacyIconButton, Shortcut, useLocalization } from '@/components';\nimport { useIsLargeScreen } from '@/hooks/useIsLargeScreen';\n\nimport type { TableFilter } from '../../../../../types';\n\nimport { ManageFiltersPopover } from './ManageFiltersPopover';\nimport { isEmptyFilter } from './util';\n\nexport type FiltersProps<TType = unknown> = {\n length: number;\n tableId: string;\n table: ReactTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { length, tableId, table } = props;\n const { texts } = useLocalization();\n const isLargeScreen = useIsLargeScreen();\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const appliedFilters = columnFilters.filter(f => !isEmptyFilter(f));\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const shortcut = { key: 'f', meta: true, shift: true };\n\n const buttonProps = {\n 'aria-label': texts.table.filters.tooltip,\n className: appliedFilters.length ? '!bg-blue-100 !text-blue-900' : undefined,\n 'data-taco': `${tableId}-toolbar-filters`,\n popover: (popoverProps: PopoverProps) => <ManageFiltersPopover {...popoverProps} length={length} table={table} />,\n shortcut,\n ref,\n tooltip: (\n <>\n {texts.table.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n ),\n };\n\n React.useEffect(() => {\n const emptyFilter = columnFilters.find(isEmptyFilter);\n\n // we set an empty filter when adding a filter through a column header.\n if (emptyFilter) {\n ref.current?.click();\n }\n }, [columnFilters]);\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <LegacyIconButton {...buttonProps} icon=\"filter\" />;\n }\n\n return (\n <LegacyButton {...buttonProps}>\n <Icon className={isLargeScreen ? undefined : '-mr-1.5'} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </LegacyButton>\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;AAkBO,SAAS,QAAyB,OAA4B;AACjE,QAAM,EAAE,QAAQ,SAAS,MAAA,IAAU;AACnC,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,gBAAgB,iBAAA;AACtB,QAAM,gBAAgB,MAAM,SAAA,EAAW;AACvC,QAAM,iBAAiB,cAAc,OAAO,OAAK,CAAC,cAAc,CAAC,CAAC;AAClE,QAAM,MAAMA,eAAM,OAA0B,IAAI;AAEhD,QAAM,WAAW,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,KAAA;AAEhD,QAAM,cAAc;AAAA,IAChB,cAAc,MAAM,MAAM,QAAQ;AAAA,IAClC,WAAW,eAAe,SAAS,gCAAgC;AAAA,IACnE,aAAa,GAAG,OAAO;AAAA,IACvB,SAAS,CAAC,iBAA+BA,+BAAA,cAAC,wBAAsB,GAAG,cAAc,QAAgB,OAAc;AAAA,IAC/G;AAAA,IACA;AAAA,IACA,SACIA,+BAAA,cAAAA,eAAA,UAAA,MACK,MAAM,MAAM,QAAQ,SACrBA,+BAAA,cAAC,UAAA,EAAS,WAAU,QAAO,MAAM,UAAU,CAC/C;AAAA,EAAA;AAIRA,iBAAM,UAAU,MAAM;AAClB,UAAM,cAAc,cAAc,KAAK,aAAa;AAGpD,QAAI,aAAa;AACb,UAAI,SAAS,MAAA;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,CAAC,iBAAiB,CAAC,eAAe,QAAQ;AAC1C,WAAOA,+BAAA,cAAC,kBAAA,EAAkB,GAAG,aAAa,MAAK,UAAS;AAAA,EAC5D;AAEA,SACIA,+BAAA,cAAC,cAAA,EAAc,GAAG,YAAA,GACdA,+BAAA,cAAC,MAAA,EAAK,WAAW,gBAAgB,SAAY,WAAW,MAAM,eAAe,SAAS,iBAAiB,SAAA,CAAU,GAChH,gBAAgB,MAAM,MAAM,QAAQ,SAAS,IAC7C,eAAe,SAAS,IAAI,eAAe,MAAM,MAAM,EAC5D;AAER;"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.tsx"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { PopoverProps } from '@/components';\nimport { Icon, LegacyButton, LegacyIconButton, Shortcut, useLocalization } from '@/components';\nimport { useIsLargeScreen } from '@/hooks/useIsLargeScreen';\n\nimport type { TableFilter } from '../../../../../types';\n\nimport { ManageFiltersPopover } from './ManageFiltersPopover';\nimport { isEmptyFilter } from './util';\n\nexport type FiltersProps<TType = unknown> = {\n length: number;\n tableId: string;\n table: ReactTable<TType>;\n};\n\nexport function Filters<TType = unknown>(props: FiltersProps<TType>) {\n const { length, tableId, table } = props;\n const { texts } = useLocalization();\n const isLargeScreen = useIsLargeScreen();\n const columnFilters = table.getState().columnFilters as TableFilter[];\n const appliedFilters = columnFilters.filter(f => !isEmptyFilter(f));\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const shortcut = { key: 'f', meta: true, shift: true };\n\n const buttonProps = {\n 'aria-label': texts.table.filters.tooltip,\n className: appliedFilters.length ? '!bg-blue-100 !text-blue-900' : undefined,\n 'data-taco': `${tableId}-toolbar-filters`,\n popover: (popoverProps: PopoverProps) => <ManageFiltersPopover {...popoverProps} length={length} table={table} />,\n shortcut,\n ref,\n tooltip: (\n <>\n {texts.table.filters.tooltip}\n <Shortcut className=\"ml-2\" keys={shortcut} />\n </>\n ),\n };\n\n React.useEffect(() => {\n const emptyFilter = columnFilters.find(filter => isEmptyFilter(filter));\n\n // we set an empty filter when adding a filter through a column header.\n if (emptyFilter) {\n ref.current?.click();\n }\n }, [columnFilters]);\n\n if (!isLargeScreen && !appliedFilters.length) {\n return <LegacyIconButton {...buttonProps} icon=\"filter\" />;\n }\n\n return (\n <LegacyButton {...buttonProps}>\n <Icon className={isLargeScreen ? undefined : '-mr-1.5'} name={appliedFilters.length ? 'filter-solid' : 'filter'} />\n {isLargeScreen ? texts.table.filters.button : ''}\n {appliedFilters.length ? `(${appliedFilters.length})` : ''}\n </LegacyButton>\n );\n}\n"],"names":["React"],"mappings":";;;;;;;;;AAkBO,SAAS,QAAyB,OAA4B;AACjE,QAAM,EAAE,QAAQ,SAAS,MAAA,IAAU;AACnC,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,gBAAgB,iBAAA;AACtB,QAAM,gBAAgB,MAAM,SAAA,EAAW;AACvC,QAAM,iBAAiB,cAAc,OAAO,OAAK,CAAC,cAAc,CAAC,CAAC;AAClE,QAAM,MAAMA,eAAM,OAA0B,IAAI;AAEhD,QAAM,WAAW,EAAE,KAAK,KAAK,MAAM,MAAM,OAAO,KAAA;AAEhD,QAAM,cAAc;AAAA,IAChB,cAAc,MAAM,MAAM,QAAQ;AAAA,IAClC,WAAW,eAAe,SAAS,gCAAgC;AAAA,IACnE,aAAa,GAAG,OAAO;AAAA,IACvB,SAAS,CAAC,iBAA+BA,+BAAA,cAAC,wBAAsB,GAAG,cAAc,QAAgB,OAAc;AAAA,IAC/G;AAAA,IACA;AAAA,IACA,SACIA,+BAAA,cAAAA,eAAA,UAAA,MACK,MAAM,MAAM,QAAQ,SACrBA,+BAAA,cAAC,UAAA,EAAS,WAAU,QAAO,MAAM,UAAU,CAC/C;AAAA,EAAA;AAIRA,iBAAM,UAAU,MAAM;AAClB,UAAM,cAAc,cAAc,KAAK,CAAA,WAAU,cAAc,MAAM,CAAC;AAGtE,QAAI,aAAa;AACb,UAAI,SAAS,MAAA;AAAA,IACjB;AAAA,EACJ,GAAG,CAAC,aAAa,CAAC;AAElB,MAAI,CAAC,iBAAiB,CAAC,eAAe,QAAQ;AAC1C,WAAOA,+BAAA,cAAC,kBAAA,EAAkB,GAAG,aAAa,MAAK,UAAS;AAAA,EAC5D;AAEA,SACIA,+BAAA,cAAC,cAAA,EAAc,GAAG,YAAA,GACdA,+BAAA,cAAC,MAAA,EAAK,WAAW,gBAAgB,SAAY,WAAW,MAAM,eAAe,SAAS,iBAAiB,SAAA,CAAU,GAChH,gBAAgB,MAAM,MAAM,QAAQ,SAAS,IAC7C,eAAe,SAAS,IAAI,eAAe,MAAM,MAAM,EAC5D;AAER;"}
@@ -20,11 +20,12 @@ function ManageFiltersPopover(props) {
20
20
  const [filters, setFilters] = React.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
21
21
  React.useEffect(() => {
22
22
  setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);
23
- requestAnimationFrame(() => {
23
+ const id = requestAnimationFrame(() => {
24
24
  const filterValues = document.querySelectorAll('[data-query-selector="filter-value"]');
25
- const lastFilter = filterValues.length ? filterValues[filterValues.length - 1] : void 0;
25
+ const lastFilter = [...filterValues].at(-1);
26
26
  lastFilter?.focus();
27
27
  });
28
+ return () => cancelAnimationFrame(id);
28
29
  }, [columnFilters]);
29
30
  const handleChangeFilter = (position, filter) => {
30
31
  setFilters((currentFilters) => {
@@ -76,6 +77,7 @@ function ManageFiltersPopover(props) {
76
77
  return /* @__PURE__ */ React.createElement(Popover.Popover, { ...popoverProps, onChange: handleClose }, /* @__PURE__ */ React.createElement(Popover.Popover.Content, null, /* @__PURE__ */ React.createElement(FilterContext.FilterContext.Provider, { value: filters }, /* @__PURE__ */ React.createElement("div", { className: "flex w-[40rem] flex-col gap-4" }, /* @__PURE__ */ React.createElement("div", { className: "flex h-8" }, /* @__PURE__ */ React.createElement("div", { className: "flex w-full items-center gap-2" }, /* @__PURE__ */ React.createElement("h4", { className: "mb-0 inline-flex" }, texts.table.filters.button), /* @__PURE__ */ React.createElement("p", { className: "mb-0 mr-auto mt-px inline-flex text-gray-700" }, texts.table.filters.total.replace(
77
78
  "[CURRENT]",
78
79
  new Intl.NumberFormat(locale).format(
80
+ // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.
79
81
  tableMeta.server._experimentalDataLoader2 ? length : table.getFilteredRowModel().rows.length
80
82
  )
81
83
  ).replace("[TOTAL]", new Intl.NumberFormat(locale).format(length))))), /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, filters.map((filter, index) => /* @__PURE__ */ React.createElement(
@@ -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.length ? filterValues[filterValues.length - 1] : undefined;\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 tableMeta.server._experimentalDataLoader2\n ? length // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full 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":"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"}
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 const id = 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\n return () => cancelAnimationFrame(id);\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":"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"}
@@ -18,11 +18,12 @@ function ManageFiltersPopover(props) {
18
18
  const [filters, setFilters] = React__default.useState(columnFilters.length ? columnFilters : [placeholderFilter]);
19
19
  React__default.useEffect(() => {
20
20
  setFilters(columnFilters.length === 0 ? [placeholderFilter] : columnFilters);
21
- requestAnimationFrame(() => {
21
+ const id = requestAnimationFrame(() => {
22
22
  const filterValues = document.querySelectorAll('[data-query-selector="filter-value"]');
23
- const lastFilter = filterValues.length ? filterValues[filterValues.length - 1] : void 0;
23
+ const lastFilter = [...filterValues].at(-1);
24
24
  lastFilter?.focus();
25
25
  });
26
+ return () => cancelAnimationFrame(id);
26
27
  }, [columnFilters]);
27
28
  const handleChangeFilter = (position, filter) => {
28
29
  setFilters((currentFilters) => {
@@ -74,6 +75,7 @@ function ManageFiltersPopover(props) {
74
75
  return /* @__PURE__ */ React__default.createElement(Popover, { ...popoverProps, onChange: handleClose }, /* @__PURE__ */ React__default.createElement(Popover.Content, null, /* @__PURE__ */ React__default.createElement(FilterContext.Provider, { value: filters }, /* @__PURE__ */ React__default.createElement("div", { className: "flex w-[40rem] flex-col gap-4" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex h-8" }, /* @__PURE__ */ React__default.createElement("div", { className: "flex w-full items-center gap-2" }, /* @__PURE__ */ React__default.createElement("h4", { className: "mb-0 inline-flex" }, texts.table.filters.button), /* @__PURE__ */ React__default.createElement("p", { className: "mb-0 mr-auto mt-px inline-flex text-gray-700" }, texts.table.filters.total.replace(
75
76
  "[CURRENT]",
76
77
  new Intl.NumberFormat(locale).format(
78
+ // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full length.
77
79
  tableMeta.server._experimentalDataLoader2 ? length : table.getFilteredRowModel().rows.length
78
80
  )
79
81
  ).replace("[TOTAL]", new Intl.NumberFormat(locale).format(length))))), /* @__PURE__ */ React__default.createElement("div", { className: "flex flex-col gap-2" }, filters.map((filter, index) => /* @__PURE__ */ React__default.createElement(
@@ -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.length ? filterValues[filterValues.length - 1] : undefined;\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 tableMeta.server._experimentalDataLoader2\n ? length // dataloader2 doesn't fill in the data array with undefined like the standard dataloader, so we need to show the full 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, 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 const id = 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\n return () => cancelAnimationFrame(id);\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 +1 @@
1
- {"version":3,"file":"Filter.cjs","sources":["../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.tsx"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\n\nimport type { TableFilter } from '../../../../../../types';\nimport { TableFilterComparator } from '../../../../../../types';\nimport { guessComparatorsBasedOnControl } from '../util';\n\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { FilterValue } from './FilterValue';\n\nexport type FilterProps<TType = unknown> = {\n allColumns: ReactTableColumn<TType, unknown>[];\n filter: TableFilter;\n position: number;\n onChange: (position: number, value: TableFilter) => void;\n onRemove?: (position: number) => void;\n};\n\nexport function Filter<TType = unknown>(props: FilterProps<TType>) {\n const { allColumns, filter, onChange: handleChange, onRemove, position } = props;\n const { texts } = useLocalization();\n const column = allColumns.find(column => column.id === filter.id);\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const {\n id,\n value: { comparator, value },\n } = filter;\n\n const handleChangeColumn = (columnId: string) => {\n const previousColumn = allColumns.find(column => column.id === id);\n const nextColumn = allColumns.find(column => column.id === columnId);\n // UX requirement: if old column data type is the same as next column data type,\n // then we applying the same filter value for the next column,\n // but when data types are different, we're reseting comparator ans value for the next column\n if (\n previousColumn?.columnDef.meta?.dataType &&\n previousColumn?.columnDef.meta?.dataType === nextColumn?.columnDef.meta?.dataType\n ) {\n handleChange(position, { id: columnId, value: filter.value });\n return;\n }\n const validComparators = guessComparatorsBasedOnControl(nextColumn);\n\n const value = {\n comparator: validComparators[0] ?? filter.value.comparator,\n value: undefined,\n };\n\n handleChange(position, { id: columnId, value });\n };\n\n const handleChangeComparator = (comparator: TableFilterComparator) => {\n let nextValue = filter.value.value;\n\n if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {\n nextValue = undefined;\n }\n handleChange(position, { id, value: { comparator, value: nextValue } });\n };\n\n const handleChangeValue = (value: any) => {\n handleChange(position, { id, value: { ...filter.value, value } });\n };\n\n const handleRemove = () => onRemove?.(position);\n\n React.useEffect(() => {\n if (ref.current && !id) {\n ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.\n }\n }, [id]);\n\n return (\n <div className=\"flex items-start gap-2\" data-taco=\"filter-row\">\n <div className=\"flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns as any} onChange={handleChangeColumn as any} value={id} ref={ref} />\n <FilterComparator column={column} onChange={handleChangeComparator as any} value={comparator} />\n <FilterValue column={column} comparator={comparator} onChange={handleChangeValue} value={value} />\n {onRemove ? (\n <LegacyIconButton appearance=\"discrete\" className=\"ml-auto\" icon=\"remove\" onClick={handleRemove} />\n ) : null}\n </div>\n );\n}\n"],"names":["useLocalization","column","guessComparatorsBasedOnControl","value","comparator","TableFilterComparator","FilterColumn","FilterComparator","FilterValue","LegacyIconButton"],"mappings":";;;;;;;;;;AAqBO,SAAS,OAAwB,OAA2B;AAC/D,QAAM,EAAE,YAAY,QAAQ,UAAU,cAAc,UAAU,aAAa;AAC3E,QAAM,EAAE,MAAA,IAAUA,6BAAA;AAClB,QAAM,SAAS,WAAW,KAAK,CAAAC,YAAUA,QAAO,OAAO,OAAO,EAAE;AAChE,QAAM,MAAM,MAAM,OAA0B,IAAI;AAEhD,QAAM;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,MAAA;AAAA,EAAM,IAC3B;AAEJ,QAAM,qBAAqB,CAAC,aAAqB;AAC7C,UAAM,iBAAiB,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,EAAE;AACjE,UAAM,aAAa,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,QAAQ;AAInE,QACI,gBAAgB,UAAU,MAAM,YAChC,gBAAgB,UAAU,MAAM,aAAa,YAAY,UAAU,MAAM,UAC3E;AACE,mBAAa,UAAU,EAAE,IAAI,UAAU,OAAO,OAAO,OAAO;AAC5D;AAAA,IACJ;AACA,UAAM,mBAAmBC,KAAAA,+BAA+B,UAAU;AAElE,UAAMC,SAAQ;AAAA,MACV,YAAY,iBAAiB,CAAC,KAAK,OAAO,MAAM;AAAA,MAChD,OAAO;AAAA,IAAA;AAGX,iBAAa,UAAU,EAAE,IAAI,UAAU,OAAAA,QAAO;AAAA,EAClD;AAEA,QAAM,yBAAyB,CAACC,gBAAsC;AAClE,QAAI,YAAY,OAAO,MAAM;AAE7B,QAAIA,gBAAeC,MAAAA,sBAAsB,WAAWD,gBAAeC,MAAAA,sBAAsB,YAAY;AACjG,kBAAY;AAAA,IAChB;AACA,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,YAAAD,aAAY,OAAO,UAAA,GAAa;AAAA,EAC1E;AAEA,QAAM,oBAAoB,CAACD,WAAe;AACtC,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,GAAG,OAAO,OAAO,OAAAA,OAAAA,GAAS;AAAA,EACpE;AAEA,QAAM,eAAe,MAAM,WAAW,QAAQ;AAE9C,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,WAAW,CAAC,IAAI;AACpB,UAAI,QAAQ,MAAA;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,EAAE,CAAC;AAEP,SACI,sBAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,aAAU,aAAA,GAC9C,sBAAA,cAAC,OAAA,EAAI,WAAU,4FAAA,GACV,WAAW,IAAI,MAAM,MAAM,QAAQ,WAAW,MAAM,MAAM,MAAM,QAAQ,WAAW,KACxF,GACA,sBAAA,cAACG,2BAAA,EAAa,YAA+B,UAAU,oBAA2B,OAAO,IAAI,IAAA,CAAU,GACvG,sBAAA,cAACC,iBAAAA,kBAAA,EAAiB,QAAgB,UAAU,wBAA+B,OAAO,WAAA,CAAY,GAC9F,sBAAA,cAACC,YAAAA,aAAA,EAAY,QAAgB,YAAwB,UAAU,mBAAmB,MAAA,CAAc,GAC/F,WACG,sBAAA,cAACC,WAAAA,kBAAA,EAAiB,YAAW,YAAW,WAAU,WAAU,MAAK,UAAS,SAAS,aAAA,CAAc,IACjG,IACR;AAER;;"}
1
+ {"version":3,"file":"Filter.cjs","sources":["../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.tsx"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\n\nimport type { TableFilter } from '../../../../../../types';\nimport { TableFilterComparator } from '../../../../../../types';\nimport { guessComparatorsBasedOnControl } from '../util';\n\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { FilterValue } from './FilterValue';\n\nexport type FilterProps<TType = unknown> = {\n allColumns: ReactTableColumn<TType, unknown>[];\n filter: TableFilter;\n position: number;\n onChange: (position: number, value: TableFilter) => void;\n onRemove?: (position: number) => void;\n};\n\nexport function Filter<TType = unknown>(props: FilterProps<TType>) {\n const { allColumns, filter, onChange: handleChange, onRemove, position } = props;\n const { texts } = useLocalization();\n const column = allColumns.find(column => column.id === filter.id);\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const {\n id,\n value: { comparator, value },\n } = filter;\n\n const handleChangeColumn = (columnId: string) => {\n const previousColumn = allColumns.find(column => column.id === id);\n const nextColumn = allColumns.find(column => column.id === columnId);\n // UX requirement: if old column data type is the same as next column data type,\n // then we applying the same filter value for the next column,\n // but when data types are different, we're reseting comparator ans value for the next column\n if (\n previousColumn?.columnDef.meta?.dataType &&\n previousColumn?.columnDef.meta?.dataType === nextColumn?.columnDef.meta?.dataType\n ) {\n handleChange(position, { id: columnId, value: filter.value });\n return;\n }\n const validComparators = guessComparatorsBasedOnControl(nextColumn);\n\n const value = {\n comparator: validComparators[0] ?? filter.value.comparator,\n value: undefined,\n };\n\n handleChange(position, { id: columnId, value });\n };\n\n const handleChangeComparator = (comparator: TableFilterComparator) => {\n let nextValue = filter.value.value;\n\n if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {\n nextValue = undefined;\n }\n handleChange(position, { id, value: { comparator, value: nextValue } });\n };\n\n const handleChangeValue = (value: any) => {\n handleChange(position, { id, value: { ...filter.value, value } });\n };\n\n const handleRemove = () => onRemove?.(position);\n\n React.useEffect(() => {\n if (ref.current && !id) {\n // after adding a new filter placeholder, we want to focus it right way.\n ref.current.focus();\n }\n }, [id]);\n\n return (\n <div className=\"flex items-start gap-2\" data-taco=\"filter-row\">\n <div className=\"flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns as any} onChange={handleChangeColumn as any} value={id} ref={ref} />\n <FilterComparator column={column} onChange={handleChangeComparator as any} value={comparator} />\n <FilterValue column={column} comparator={comparator} onChange={handleChangeValue} value={value} />\n {onRemove ? (\n <LegacyIconButton appearance=\"discrete\" className=\"ml-auto\" icon=\"remove\" onClick={handleRemove} />\n ) : null}\n </div>\n );\n}\n"],"names":["useLocalization","column","guessComparatorsBasedOnControl","value","comparator","TableFilterComparator","FilterColumn","FilterComparator","FilterValue","LegacyIconButton"],"mappings":";;;;;;;;;;AAqBO,SAAS,OAAwB,OAA2B;AAC/D,QAAM,EAAE,YAAY,QAAQ,UAAU,cAAc,UAAU,aAAa;AAC3E,QAAM,EAAE,MAAA,IAAUA,6BAAA;AAClB,QAAM,SAAS,WAAW,KAAK,CAAAC,YAAUA,QAAO,OAAO,OAAO,EAAE;AAChE,QAAM,MAAM,MAAM,OAA0B,IAAI;AAEhD,QAAM;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,MAAA;AAAA,EAAM,IAC3B;AAEJ,QAAM,qBAAqB,CAAC,aAAqB;AAC7C,UAAM,iBAAiB,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,EAAE;AACjE,UAAM,aAAa,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,QAAQ;AAInE,QACI,gBAAgB,UAAU,MAAM,YAChC,gBAAgB,UAAU,MAAM,aAAa,YAAY,UAAU,MAAM,UAC3E;AACE,mBAAa,UAAU,EAAE,IAAI,UAAU,OAAO,OAAO,OAAO;AAC5D;AAAA,IACJ;AACA,UAAM,mBAAmBC,KAAAA,+BAA+B,UAAU;AAElE,UAAMC,SAAQ;AAAA,MACV,YAAY,iBAAiB,CAAC,KAAK,OAAO,MAAM;AAAA,MAChD,OAAO;AAAA,IAAA;AAGX,iBAAa,UAAU,EAAE,IAAI,UAAU,OAAAA,QAAO;AAAA,EAClD;AAEA,QAAM,yBAAyB,CAACC,gBAAsC;AAClE,QAAI,YAAY,OAAO,MAAM;AAE7B,QAAIA,gBAAeC,MAAAA,sBAAsB,WAAWD,gBAAeC,MAAAA,sBAAsB,YAAY;AACjG,kBAAY;AAAA,IAChB;AACA,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,YAAAD,aAAY,OAAO,UAAA,GAAa;AAAA,EAC1E;AAEA,QAAM,oBAAoB,CAACD,WAAe;AACtC,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,GAAG,OAAO,OAAO,OAAAA,OAAAA,GAAS;AAAA,EACpE;AAEA,QAAM,eAAe,MAAM,WAAW,QAAQ;AAE9C,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,WAAW,CAAC,IAAI;AAEpB,UAAI,QAAQ,MAAA;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,EAAE,CAAC;AAEP,SACI,sBAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,aAAU,aAAA,GAC9C,sBAAA,cAAC,OAAA,EAAI,WAAU,4FAAA,GACV,WAAW,IAAI,MAAM,MAAM,QAAQ,WAAW,MAAM,MAAM,MAAM,QAAQ,WAAW,KACxF,GACA,sBAAA,cAACG,2BAAA,EAAa,YAA+B,UAAU,oBAA2B,OAAO,IAAI,IAAA,CAAU,GACvG,sBAAA,cAACC,iBAAAA,kBAAA,EAAiB,QAAgB,UAAU,wBAA+B,OAAO,WAAA,CAAY,GAC9F,sBAAA,cAACC,YAAAA,aAAA,EAAY,QAAgB,YAAwB,UAAU,mBAAmB,MAAA,CAAc,GAC/F,WACG,sBAAA,cAACC,WAAAA,kBAAA,EAAiB,YAAW,YAAW,WAAU,WAAU,MAAK,UAAS,SAAS,aAAA,CAAc,IACjG,IACR;AAER;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Filter.js","sources":["../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.tsx"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\n\nimport type { TableFilter } from '../../../../../../types';\nimport { TableFilterComparator } from '../../../../../../types';\nimport { guessComparatorsBasedOnControl } from '../util';\n\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { FilterValue } from './FilterValue';\n\nexport type FilterProps<TType = unknown> = {\n allColumns: ReactTableColumn<TType, unknown>[];\n filter: TableFilter;\n position: number;\n onChange: (position: number, value: TableFilter) => void;\n onRemove?: (position: number) => void;\n};\n\nexport function Filter<TType = unknown>(props: FilterProps<TType>) {\n const { allColumns, filter, onChange: handleChange, onRemove, position } = props;\n const { texts } = useLocalization();\n const column = allColumns.find(column => column.id === filter.id);\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const {\n id,\n value: { comparator, value },\n } = filter;\n\n const handleChangeColumn = (columnId: string) => {\n const previousColumn = allColumns.find(column => column.id === id);\n const nextColumn = allColumns.find(column => column.id === columnId);\n // UX requirement: if old column data type is the same as next column data type,\n // then we applying the same filter value for the next column,\n // but when data types are different, we're reseting comparator ans value for the next column\n if (\n previousColumn?.columnDef.meta?.dataType &&\n previousColumn?.columnDef.meta?.dataType === nextColumn?.columnDef.meta?.dataType\n ) {\n handleChange(position, { id: columnId, value: filter.value });\n return;\n }\n const validComparators = guessComparatorsBasedOnControl(nextColumn);\n\n const value = {\n comparator: validComparators[0] ?? filter.value.comparator,\n value: undefined,\n };\n\n handleChange(position, { id: columnId, value });\n };\n\n const handleChangeComparator = (comparator: TableFilterComparator) => {\n let nextValue = filter.value.value;\n\n if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {\n nextValue = undefined;\n }\n handleChange(position, { id, value: { comparator, value: nextValue } });\n };\n\n const handleChangeValue = (value: any) => {\n handleChange(position, { id, value: { ...filter.value, value } });\n };\n\n const handleRemove = () => onRemove?.(position);\n\n React.useEffect(() => {\n if (ref.current && !id) {\n ref.current.focus(); // after adding a new filter placeholder, we want to focus it right way.\n }\n }, [id]);\n\n return (\n <div className=\"flex items-start gap-2\" data-taco=\"filter-row\">\n <div className=\"flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns as any} onChange={handleChangeColumn as any} value={id} ref={ref} />\n <FilterComparator column={column} onChange={handleChangeComparator as any} value={comparator} />\n <FilterValue column={column} comparator={comparator} onChange={handleChangeValue} value={value} />\n {onRemove ? (\n <LegacyIconButton appearance=\"discrete\" className=\"ml-auto\" icon=\"remove\" onClick={handleRemove} />\n ) : null}\n </div>\n );\n}\n"],"names":["column","React","value","comparator"],"mappings":";;;;;;;;AAqBO,SAAS,OAAwB,OAA2B;AAC/D,QAAM,EAAE,YAAY,QAAQ,UAAU,cAAc,UAAU,aAAa;AAC3E,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,SAAS,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,OAAO,EAAE;AAChE,QAAM,MAAMC,eAAM,OAA0B,IAAI;AAEhD,QAAM;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,MAAA;AAAA,EAAM,IAC3B;AAEJ,QAAM,qBAAqB,CAAC,aAAqB;AAC7C,UAAM,iBAAiB,WAAW,KAAK,CAAAD,YAAUA,QAAO,OAAO,EAAE;AACjE,UAAM,aAAa,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,QAAQ;AAInE,QACI,gBAAgB,UAAU,MAAM,YAChC,gBAAgB,UAAU,MAAM,aAAa,YAAY,UAAU,MAAM,UAC3E;AACE,mBAAa,UAAU,EAAE,IAAI,UAAU,OAAO,OAAO,OAAO;AAC5D;AAAA,IACJ;AACA,UAAM,mBAAmB,+BAA+B,UAAU;AAElE,UAAME,SAAQ;AAAA,MACV,YAAY,iBAAiB,CAAC,KAAK,OAAO,MAAM;AAAA,MAChD,OAAO;AAAA,IAAA;AAGX,iBAAa,UAAU,EAAE,IAAI,UAAU,OAAAA,QAAO;AAAA,EAClD;AAEA,QAAM,yBAAyB,CAACC,gBAAsC;AAClE,QAAI,YAAY,OAAO,MAAM;AAE7B,QAAIA,gBAAe,sBAAsB,WAAWA,gBAAe,sBAAsB,YAAY;AACjG,kBAAY;AAAA,IAChB;AACA,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,YAAAA,aAAY,OAAO,UAAA,GAAa;AAAA,EAC1E;AAEA,QAAM,oBAAoB,CAACD,WAAe;AACtC,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,GAAG,OAAO,OAAO,OAAAA,OAAAA,GAAS;AAAA,EACpE;AAEA,QAAM,eAAe,MAAM,WAAW,QAAQ;AAE9CD,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,WAAW,CAAC,IAAI;AACpB,UAAI,QAAQ,MAAA;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,EAAE,CAAC;AAEP,SACIA,+BAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,aAAU,aAAA,GAC9CA,+BAAA,cAAC,OAAA,EAAI,WAAU,4FAAA,GACV,WAAW,IAAI,MAAM,MAAM,QAAQ,WAAW,MAAM,MAAM,MAAM,QAAQ,WAAW,KACxF,GACAA,+BAAA,cAAC,cAAA,EAAa,YAA+B,UAAU,oBAA2B,OAAO,IAAI,IAAA,CAAU,GACvGA,+BAAA,cAAC,kBAAA,EAAiB,QAAgB,UAAU,wBAA+B,OAAO,WAAA,CAAY,GAC9FA,+BAAA,cAAC,aAAA,EAAY,QAAgB,YAAwB,UAAU,mBAAmB,MAAA,CAAc,GAC/F,WACGA,+BAAA,cAAC,kBAAA,EAAiB,YAAW,YAAW,WAAU,WAAU,MAAK,UAAS,SAAS,aAAA,CAAc,IACjG,IACR;AAER;"}
1
+ {"version":3,"file":"Filter.js","sources":["../../../../../../../../../src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.tsx"],"sourcesContent":["import type { Column as ReactTableColumn } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { LegacyIconButton, useLocalization } from '@/components';\n\nimport type { TableFilter } from '../../../../../../types';\nimport { TableFilterComparator } from '../../../../../../types';\nimport { guessComparatorsBasedOnControl } from '../util';\n\nimport { FilterColumn } from './FilterColumn';\nimport { FilterComparator } from './FilterComparator';\nimport { FilterValue } from './FilterValue';\n\nexport type FilterProps<TType = unknown> = {\n allColumns: ReactTableColumn<TType, unknown>[];\n filter: TableFilter;\n position: number;\n onChange: (position: number, value: TableFilter) => void;\n onRemove?: (position: number) => void;\n};\n\nexport function Filter<TType = unknown>(props: FilterProps<TType>) {\n const { allColumns, filter, onChange: handleChange, onRemove, position } = props;\n const { texts } = useLocalization();\n const column = allColumns.find(column => column.id === filter.id);\n const ref = React.useRef<HTMLButtonElement>(null);\n\n const {\n id,\n value: { comparator, value },\n } = filter;\n\n const handleChangeColumn = (columnId: string) => {\n const previousColumn = allColumns.find(column => column.id === id);\n const nextColumn = allColumns.find(column => column.id === columnId);\n // UX requirement: if old column data type is the same as next column data type,\n // then we applying the same filter value for the next column,\n // but when data types are different, we're reseting comparator ans value for the next column\n if (\n previousColumn?.columnDef.meta?.dataType &&\n previousColumn?.columnDef.meta?.dataType === nextColumn?.columnDef.meta?.dataType\n ) {\n handleChange(position, { id: columnId, value: filter.value });\n return;\n }\n const validComparators = guessComparatorsBasedOnControl(nextColumn);\n\n const value = {\n comparator: validComparators[0] ?? filter.value.comparator,\n value: undefined,\n };\n\n handleChange(position, { id: columnId, value });\n };\n\n const handleChangeComparator = (comparator: TableFilterComparator) => {\n let nextValue = filter.value.value;\n\n if (comparator === TableFilterComparator.IsEmpty || comparator === TableFilterComparator.IsNotEmpty) {\n nextValue = undefined;\n }\n handleChange(position, { id, value: { comparator, value: nextValue } });\n };\n\n const handleChangeValue = (value: any) => {\n handleChange(position, { id, value: { ...filter.value, value } });\n };\n\n const handleRemove = () => onRemove?.(position);\n\n React.useEffect(() => {\n if (ref.current && !id) {\n // after adding a new filter placeholder, we want to focus it right way.\n ref.current.focus();\n }\n }, [id]);\n\n return (\n <div className=\"flex items-start gap-2\" data-taco=\"filter-row\">\n <div className=\"flex min-h-[theme(spacing.8)] w-14 flex-shrink-0 items-center justify-end pr-2 text-right\">\n {position > 0 ? texts.table.filters.conditions.and : texts.table.filters.conditions.where}\n </div>\n <FilterColumn allColumns={allColumns as any} onChange={handleChangeColumn as any} value={id} ref={ref} />\n <FilterComparator column={column} onChange={handleChangeComparator as any} value={comparator} />\n <FilterValue column={column} comparator={comparator} onChange={handleChangeValue} value={value} />\n {onRemove ? (\n <LegacyIconButton appearance=\"discrete\" className=\"ml-auto\" icon=\"remove\" onClick={handleRemove} />\n ) : null}\n </div>\n );\n}\n"],"names":["column","React","value","comparator"],"mappings":";;;;;;;;AAqBO,SAAS,OAAwB,OAA2B;AAC/D,QAAM,EAAE,YAAY,QAAQ,UAAU,cAAc,UAAU,aAAa;AAC3E,QAAM,EAAE,MAAA,IAAU,gBAAA;AAClB,QAAM,SAAS,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,OAAO,EAAE;AAChE,QAAM,MAAMC,eAAM,OAA0B,IAAI;AAEhD,QAAM;AAAA,IACF;AAAA,IACA,OAAO,EAAE,YAAY,MAAA;AAAA,EAAM,IAC3B;AAEJ,QAAM,qBAAqB,CAAC,aAAqB;AAC7C,UAAM,iBAAiB,WAAW,KAAK,CAAAD,YAAUA,QAAO,OAAO,EAAE;AACjE,UAAM,aAAa,WAAW,KAAK,CAAAA,YAAUA,QAAO,OAAO,QAAQ;AAInE,QACI,gBAAgB,UAAU,MAAM,YAChC,gBAAgB,UAAU,MAAM,aAAa,YAAY,UAAU,MAAM,UAC3E;AACE,mBAAa,UAAU,EAAE,IAAI,UAAU,OAAO,OAAO,OAAO;AAC5D;AAAA,IACJ;AACA,UAAM,mBAAmB,+BAA+B,UAAU;AAElE,UAAME,SAAQ;AAAA,MACV,YAAY,iBAAiB,CAAC,KAAK,OAAO,MAAM;AAAA,MAChD,OAAO;AAAA,IAAA;AAGX,iBAAa,UAAU,EAAE,IAAI,UAAU,OAAAA,QAAO;AAAA,EAClD;AAEA,QAAM,yBAAyB,CAACC,gBAAsC;AAClE,QAAI,YAAY,OAAO,MAAM;AAE7B,QAAIA,gBAAe,sBAAsB,WAAWA,gBAAe,sBAAsB,YAAY;AACjG,kBAAY;AAAA,IAChB;AACA,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,YAAAA,aAAY,OAAO,UAAA,GAAa;AAAA,EAC1E;AAEA,QAAM,oBAAoB,CAACD,WAAe;AACtC,iBAAa,UAAU,EAAE,IAAI,OAAO,EAAE,GAAG,OAAO,OAAO,OAAAA,OAAAA,GAAS;AAAA,EACpE;AAEA,QAAM,eAAe,MAAM,WAAW,QAAQ;AAE9CD,iBAAM,UAAU,MAAM;AAClB,QAAI,IAAI,WAAW,CAAC,IAAI;AAEpB,UAAI,QAAQ,MAAA;AAAA,IAChB;AAAA,EACJ,GAAG,CAAC,EAAE,CAAC;AAEP,SACIA,+BAAA,cAAC,OAAA,EAAI,WAAU,0BAAyB,aAAU,aAAA,GAC9CA,+BAAA,cAAC,OAAA,EAAI,WAAU,4FAAA,GACV,WAAW,IAAI,MAAM,MAAM,QAAQ,WAAW,MAAM,MAAM,MAAM,QAAQ,WAAW,KACxF,GACAA,+BAAA,cAAC,cAAA,EAAa,YAA+B,UAAU,oBAA2B,OAAO,IAAI,IAAA,CAAU,GACvGA,+BAAA,cAAC,kBAAA,EAAiB,QAAgB,UAAU,wBAA+B,OAAO,WAAA,CAAY,GAC9FA,+BAAA,cAAC,aAAA,EAAY,QAAgB,YAAwB,UAAU,mBAAmB,MAAA,CAAc,GAC/F,WACGA,+BAAA,cAAC,kBAAA,EAAiB,YAAW,YAAW,WAAU,WAAU,MAAK,UAAS,SAAS,aAAA,CAAc,IACjG,IACR;AAER;"}
@@ -72,7 +72,7 @@ function Print(props) {
72
72
  togglePrinting(true);
73
73
  requestAnimationFrame(() => {
74
74
  requestAnimationFrame(() => {
75
- const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
75
+ const isSafari = /^((?!chrome|android).)*safari/iu.test(navigator.userAgent);
76
76
  if (isSafari) {
77
77
  try {
78
78
  document.execCommand("print", false, void 0);
@@ -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/i.test(navigator.userAgent);\n\n if (isSafari) {\n try {\n // Try using document.execCommand for printing in Safari\n document.execCommand('print', false, undefined);\n } catch {\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, 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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"}
@@ -70,7 +70,7 @@ function Print(props) {
70
70
  togglePrinting(true);
71
71
  requestAnimationFrame(() => {
72
72
  requestAnimationFrame(() => {
73
- const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
73
+ const isSafari = /^((?!chrome|android).)*safari/iu.test(navigator.userAgent);
74
74
  if (isSafari) {
75
75
  try {
76
76
  document.execCommand("print", false, void 0);
@@ -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/i.test(navigator.userAgent);\n\n if (isSafari) {\n try {\n // Try using document.execCommand for printing in Safari\n document.execCommand('print', false, undefined);\n } catch {\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, 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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"}
@@ -4,8 +4,15 @@ const React = require("react");
4
4
  function useTableRef(table, ref) {
5
5
  React.useEffect(() => {
6
6
  if (ref.current) {
7
+ const tableMeta = table.options.meta;
7
8
  ref.current.instance = {
8
9
  resetFiltering: () => table.resetColumnFilters(),
10
+ resetPagination: async () => {
11
+ if (tableMeta?.server.resetPagination) {
12
+ await tableMeta.server.resetPagination();
13
+ ref.current?.scrollTo({ top: 0 });
14
+ }
15
+ },
9
16
  resetRowExpansion: () => table.resetExpanded(),
10
17
  resetRowSelection: () => table.resetRowSelection(),
11
18
  resetSorting: () => table.resetSorting()
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRef.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableRef.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\n\nexport function useTableRef<TType = unknown>(table: ReactTable<TType>, ref: React.RefObject<TableRef>) {\n React.useEffect(() => {\n if (ref.current) {\n ref.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, ref.current]);\n}\n"],"names":[],"mappings":";;;AAKO,SAAS,YAA6B,OAA0B,KAAgC;AACnG,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,UAAI,QAAQ,WAAW;AAAA,QACnB,gBAAgB,MAAM,MAAM,mBAAA;AAAA,QAC5B,mBAAmB,MAAM,MAAM,cAAA;AAAA,QAC/B,mBAAmB,MAAM,MAAM,kBAAA;AAAA,QAC/B,cAAc,MAAM,MAAM,aAAA;AAAA,MAAa;AAAA,IAE/C;AAAA,EACJ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AAC3B;;"}
1
+ {"version":3,"file":"useTableRef.cjs","sources":["../../../../../src/primitives/Table/Core/features/useTableRef.ts"],"sourcesContent":["import type { Table as ReactTable } from '@tanstack/react-table';\nimport React from 'react';\n\nimport type { TableRef } from '../../types';\n\nexport function useTableRef<TType = unknown>(table: ReactTable<TType>, ref: React.RefObject<TableRef>) {\n React.useEffect(() => {\n if (ref.current) {\n const tableMeta = table.options.meta;\n\n ref.current.instance = {\n resetFiltering: () => table.resetColumnFilters(),\n resetPagination: async () => {\n if (tableMeta?.server.resetPagination) {\n await tableMeta.server.resetPagination();\n // the loaded pages are gone, so the viewport must return to the first page\n ref.current?.scrollTo({ top: 0 });\n }\n },\n resetRowExpansion: () => table.resetExpanded(),\n resetRowSelection: () => table.resetRowSelection(),\n resetSorting: () => table.resetSorting(),\n };\n }\n }, [table, ref.current]);\n}\n"],"names":[],"mappings":";;;AAKO,SAAS,YAA6B,OAA0B,KAAgC;AACnG,QAAM,UAAU,MAAM;AAClB,QAAI,IAAI,SAAS;AACb,YAAM,YAAY,MAAM,QAAQ;AAEhC,UAAI,QAAQ,WAAW;AAAA,QACnB,gBAAgB,MAAM,MAAM,mBAAA;AAAA,QAC5B,iBAAiB,YAAY;AACzB,cAAI,WAAW,OAAO,iBAAiB;AACnC,kBAAM,UAAU,OAAO,gBAAA;AAEvB,gBAAI,SAAS,SAAS,EAAE,KAAK,GAAG;AAAA,UACpC;AAAA,QACJ;AAAA,QACA,mBAAmB,MAAM,MAAM,cAAA;AAAA,QAC/B,mBAAmB,MAAM,MAAM,kBAAA;AAAA,QAC/B,cAAc,MAAM,MAAM,aAAA;AAAA,MAAa;AAAA,IAE/C;AAAA,EACJ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AAC3B;;"}
@@ -2,8 +2,15 @@ import React__default from "react";
2
2
  function useTableRef(table, ref) {
3
3
  React__default.useEffect(() => {
4
4
  if (ref.current) {
5
+ const tableMeta = table.options.meta;
5
6
  ref.current.instance = {
6
7
  resetFiltering: () => table.resetColumnFilters(),
8
+ resetPagination: async () => {
9
+ if (tableMeta?.server.resetPagination) {
10
+ await tableMeta.server.resetPagination();
11
+ ref.current?.scrollTo({ top: 0 });
12
+ }
13
+ },
7
14
  resetRowExpansion: () => table.resetExpanded(),
8
15
  resetRowSelection: () => table.resetRowSelection(),
9
16
  resetSorting: () => table.resetSorting()