@rio-cloud/rio-uikit 2.2.0 → 2.3.0-beta.1

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 (412) hide show
  1. package/AnalyticsAnalysisOverlay.d.ts +1 -0
  2. package/AnalyticsAnalysisOverlay.js +5 -0
  3. package/AnalyticsAnalysisOverlay.js.map +1 -0
  4. package/Table.d.ts +2 -0
  5. package/Table.js +23 -0
  6. package/Table.js.map +1 -0
  7. package/TableCol.d.ts +2 -2
  8. package/TableCol.js +1 -1
  9. package/TableHead.d.ts +2 -2
  10. package/TableHead.js +1 -1
  11. package/TableSettingsDialog.d.ts +2 -2
  12. package/TableSettingsDialog.js +1 -1
  13. package/TableToolbar.js +3 -2
  14. package/analyticsAnalysisUtils.d.ts +1 -0
  15. package/analyticsAnalysisUtils.js +13 -0
  16. package/analyticsAnalysisUtils.js.map +1 -0
  17. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.d.ts +18 -0
  18. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js +128 -0
  19. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisBanner.js.map +1 -0
  20. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.d.ts +9 -0
  21. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js +73 -0
  22. package/components/analyticsAnalysisOverlay/AnalyticsAnalysisOverlay.js.map +1 -0
  23. package/components/applicationHeader/AppMenuContent.js.map +1 -1
  24. package/components/applicationHeader/ApplicationActionBar.js +4 -4
  25. package/components/applicationHeader/ApplicationActionBar.js.map +1 -1
  26. package/components/applicationHeader/CollapsedNavItem.js +5 -14
  27. package/components/applicationHeader/CollapsedNavItem.js.map +1 -1
  28. package/components/applicationHeader/NavItems.js +10 -10
  29. package/components/applicationHeader/NavItems.js.map +1 -1
  30. package/components/assetTree/AssetTree.js +23 -23
  31. package/components/assetTree/AssetTree.js.map +1 -1
  32. package/components/assetTree/TreeNothingFound.js +2 -2
  33. package/components/assetTree/TreeNothingFound.js.map +1 -1
  34. package/components/assetTree/treeUtils.js.map +1 -1
  35. package/components/autosuggest/AutoSuggest.js +31 -31
  36. package/components/autosuggest/AutoSuggest.js.map +1 -1
  37. package/components/autosuggest/AutoSuggestAddons.js +9 -9
  38. package/components/autosuggest/AutoSuggestAddons.js.map +1 -1
  39. package/components/banner/BannerActions.js +2 -2
  40. package/components/banner/BannerActions.js.map +1 -1
  41. package/components/banner/BannerIcon.js +3 -3
  42. package/components/banner/BannerIcon.js.map +1 -1
  43. package/components/banner/BannerPage.js +4 -4
  44. package/components/banner/BannerPage.js.map +1 -1
  45. package/components/button/Button.d.ts +7 -0
  46. package/components/button/Button.js +73 -65
  47. package/components/button/Button.js.map +1 -1
  48. package/components/checkbox/Checkbox.js +18 -17
  49. package/components/checkbox/Checkbox.js.map +1 -1
  50. package/components/datepicker/DateRangePicker.js +0 -2
  51. package/components/datepicker/DateRangePicker.js.map +1 -1
  52. package/components/datepicker/DayPicker.js +16 -16
  53. package/components/datepicker/DayPicker.js.map +1 -1
  54. package/components/dialog/Dialog.js.map +1 -1
  55. package/components/dialog/DialogHeader.js +23 -20
  56. package/components/dialog/DialogHeader.js.map +1 -1
  57. package/components/dialog/MediaDialog.js +1 -1
  58. package/components/dialog/MediaDialog.js.map +1 -1
  59. package/components/editableContent/EditableContent.js +7 -7
  60. package/components/editableContent/EditableContent.js.map +1 -1
  61. package/components/expander/ExpanderList.d.ts +5 -0
  62. package/components/expander/ExpanderList.js +25 -16
  63. package/components/expander/ExpanderList.js.map +1 -1
  64. package/components/expander/ExpanderPanel.d.ts +5 -0
  65. package/components/expander/ExpanderPanel.js +29 -28
  66. package/components/expander/ExpanderPanel.js.map +1 -1
  67. package/components/fade/FadeExpander.js +1 -1
  68. package/components/fade/FadeExpander.js.map +1 -1
  69. package/components/filepicker/FilePicker.js.map +1 -1
  70. package/components/loadMore/LoadMoreButton.d.ts +5 -0
  71. package/components/loadMore/LoadMoreButton.js +33 -29
  72. package/components/loadMore/LoadMoreButton.js.map +1 -1
  73. package/components/map/components/features/ContextMenu.js +13 -13
  74. package/components/map/components/features/ContextMenu.js.map +1 -1
  75. package/components/map/components/features/basics/InfoBubble.js.map +1 -1
  76. package/components/map/components/features/settings/MapSettingsTile.js.map +1 -1
  77. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js +6 -6
  78. package/components/map/components/features/settings/builtinSettings/MapTypeSettings.js.map +1 -1
  79. package/components/map/utils/eventHandling.js +18 -18
  80. package/components/map/utils/eventHandling.js.map +1 -1
  81. package/components/map/utils/positions.d.ts +1 -1
  82. package/components/map/utils/positions.js +15 -12
  83. package/components/map/utils/positions.js.map +1 -1
  84. package/components/map/utils/rendering.d.ts +1 -1
  85. package/components/menuItems/MenuItems.js +6 -6
  86. package/components/menuItems/MenuItems.js.map +1 -1
  87. package/components/notification/NotificationsContainer.js.map +1 -1
  88. package/components/numberInput/NumberInput.js +57 -56
  89. package/components/numberInput/NumberInput.js.map +1 -1
  90. package/components/popover/Popover.js +4 -4
  91. package/components/popover/Popover.js.map +1 -1
  92. package/components/resizer/Resizer.js +6 -3
  93. package/components/resizer/Resizer.js.map +1 -1
  94. package/components/selects/BaseSelectDropdown.js +34 -32
  95. package/components/selects/BaseSelectDropdown.js.map +1 -1
  96. package/components/selects/MultiselectTogglePlaceholder.js.map +1 -1
  97. package/components/selects/MultiselectToggleSelection.js +11 -11
  98. package/components/selects/MultiselectToggleSelection.js.map +1 -1
  99. package/components/sidebars/Sidebar.js +12 -12
  100. package/components/sidebars/Sidebar.js.map +1 -1
  101. package/components/sidebars/SidebarCloseButton.js +2 -2
  102. package/components/sidebars/SidebarCloseButton.js.map +1 -1
  103. package/components/smoothScrollbars/SmoothScrollbars.d.ts +4 -3
  104. package/components/smoothScrollbars/SmoothScrollbars.js +11 -11
  105. package/components/smoothScrollbars/SmoothScrollbars.js.map +1 -1
  106. package/components/states/CustomState.js.map +1 -1
  107. package/components/svgImage/svgConverter.js.map +1 -1
  108. package/components/table/Table.d.ts +267 -0
  109. package/components/table/Table.js +233 -0
  110. package/components/table/Table.js.map +1 -0
  111. package/components/table/Table.types.d.ts +207 -0
  112. package/components/table/TableBody.d.ts +10 -0
  113. package/components/table/TableBody.js +5 -0
  114. package/components/table/TableBody.js.map +1 -0
  115. package/components/table/TableCard.d.ts +63 -0
  116. package/components/table/TableCard.js +150 -0
  117. package/components/table/TableCard.js.map +1 -0
  118. package/components/table/TableColumn.d.ts +47 -0
  119. package/components/table/TableColumn.js +5 -0
  120. package/components/table/TableColumn.js.map +1 -0
  121. package/components/table/TableExpandedContentRow.d.ts +22 -0
  122. package/components/table/TableExpandedContentRow.js +5 -0
  123. package/components/table/TableExpandedContentRow.js.map +1 -0
  124. package/components/table/TableExpandedRow.d.ts +17 -0
  125. package/components/table/TableExpandedRow.js +5 -0
  126. package/components/table/TableExpandedRow.js.map +1 -0
  127. package/components/table/TableExpanderButton.d.ts +25 -0
  128. package/components/table/TableExpanderButton.js +22 -0
  129. package/components/table/TableExpanderButton.js.map +1 -0
  130. package/components/table/TableFooter.d.ts +13 -0
  131. package/components/table/TableFooter.js +5 -0
  132. package/components/table/TableFooter.js.map +1 -0
  133. package/components/table/TableGroupFooterRow.d.ts +18 -0
  134. package/components/table/TableGroupFooterRow.js +5 -0
  135. package/components/table/TableGroupFooterRow.js.map +1 -0
  136. package/components/table/TableGroupRow.d.ts +24 -0
  137. package/components/table/TableGroupRow.js +5 -0
  138. package/components/table/TableGroupRow.js.map +1 -0
  139. package/components/table/TableHeader.d.ts +9 -0
  140. package/components/table/TableHeader.js +5 -0
  141. package/components/table/TableHeader.js.map +1 -0
  142. package/components/table/TableHeaderColumn.d.ts +70 -0
  143. package/components/table/TableHeaderColumn.js +5 -0
  144. package/components/table/TableHeaderColumn.js.map +1 -0
  145. package/components/table/TableHeaderRow.d.ts +9 -0
  146. package/components/table/TableHeaderRow.js +5 -0
  147. package/components/table/TableHeaderRow.js.map +1 -0
  148. package/components/table/TableRow.d.ts +19 -0
  149. package/components/table/TableRow.js +5 -0
  150. package/components/table/TableRow.js.map +1 -0
  151. package/components/table/TableSpacerRow.d.ts +12 -0
  152. package/components/table/TableSpacerRow.js +5 -0
  153. package/components/table/TableSpacerRow.js.map +1 -0
  154. package/components/table/TableToolbar.d.ts +23 -1
  155. package/components/table/TableToolbar.js +38 -4
  156. package/components/table/TableToolbar.js.map +1 -1
  157. package/components/table/TableViewToggles.d.ts +18 -0
  158. package/components/table/TableViewToggles.js +59 -87
  159. package/components/table/TableViewToggles.js.map +1 -1
  160. package/components/table/layout/columnSizing.d.ts +3 -0
  161. package/components/table/layout/columnSizing.js +23 -0
  162. package/components/table/layout/columnSizing.js.map +1 -0
  163. package/components/table/layout/useDraggableColumns.d.ts +14 -0
  164. package/components/table/layout/useDraggableColumns.js +47 -0
  165. package/components/table/layout/useDraggableColumns.js.map +1 -0
  166. package/components/table/layout/useHorizontalSectionSync.d.ts +11 -0
  167. package/components/table/layout/useHorizontalSectionSync.js +39 -0
  168. package/components/table/layout/useHorizontalSectionSync.js.map +1 -0
  169. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +12 -0
  170. package/components/table/layout/useMeasuredColumnMaxWidths.js +85 -0
  171. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -0
  172. package/components/table/layout/useResizableColumns.d.ts +14 -0
  173. package/components/table/layout/useResizableColumns.js +91 -0
  174. package/components/table/layout/useResizableColumns.js.map +1 -0
  175. package/components/table/layout/useTableLayout.d.ts +25 -0
  176. package/components/table/layout/useTableLayout.js +56 -0
  177. package/components/table/layout/useTableLayout.js.map +1 -0
  178. package/components/table/layout/useTableVirtualization.d.ts +22 -0
  179. package/components/table/layout/useTableVirtualization.js +125 -0
  180. package/components/table/layout/useTableVirtualization.js.map +1 -0
  181. package/components/table/model/buildTableViewModel.d.ts +28 -0
  182. package/components/table/model/buildTableViewModel.js +221 -0
  183. package/components/table/model/buildTableViewModel.js.map +1 -0
  184. package/components/table/model/resolveCellContent.d.ts +2 -0
  185. package/components/table/model/resolveCellContent.js +5 -0
  186. package/components/table/model/resolveCellContent.js.map +1 -0
  187. package/components/table/model/resolveRowMeta.d.ts +2 -0
  188. package/components/table/model/resolveRowMeta.js +15 -0
  189. package/components/table/model/resolveRowMeta.js.map +1 -0
  190. package/components/table/model/resolveTableClassConfig.d.ts +48 -0
  191. package/components/table/model/resolveTableClassConfig.js +64 -0
  192. package/components/table/model/resolveTableClassConfig.js.map +1 -0
  193. package/components/table/model/tableViewModel.types.d.ts +153 -0
  194. package/components/table/native/TableCol.js.map +1 -0
  195. package/components/table/{TableHead.js → native/TableHead.js} +2 -2
  196. package/components/table/native/TableHead.js.map +1 -0
  197. package/components/table/native/TableSettingsColumnButtons.js +59 -0
  198. package/components/table/native/TableSettingsColumnButtons.js.map +1 -0
  199. package/components/table/{TableSettingsColumnDetails.js → native/TableSettingsColumnDetails.js} +2 -2
  200. package/components/table/native/TableSettingsColumnDetails.js.map +1 -0
  201. package/components/table/{TableSettingsDialog.d.ts → native/TableSettingsDialog.d.ts} +2 -3
  202. package/components/table/native/TableSettingsDialog.js +216 -0
  203. package/components/table/native/TableSettingsDialog.js.map +1 -0
  204. package/components/table/{TableSettingsDialogFooter.js → native/TableSettingsDialogFooter.js} +2 -2
  205. package/components/table/native/TableSettingsDialogFooter.js.map +1 -0
  206. package/components/table/{TableSettingsListContainer.js → native/TableSettingsListContainer.js} +8 -8
  207. package/components/table/native/TableSettingsListContainer.js.map +1 -0
  208. package/components/table/native/TableSettingsListItem.js +100 -0
  209. package/components/table/native/TableSettingsListItem.js.map +1 -0
  210. package/components/table/parse/parseBody.d.ts +3 -0
  211. package/components/table/parse/parseBody.js +13 -0
  212. package/components/table/parse/parseBody.js.map +1 -0
  213. package/components/table/parse/parseColumns.d.ts +3 -0
  214. package/components/table/parse/parseColumns.js +81 -0
  215. package/components/table/parse/parseColumns.js.map +1 -0
  216. package/components/table/parse/parseFooter.d.ts +3 -0
  217. package/components/table/parse/parseFooter.js +39 -0
  218. package/components/table/parse/parseFooter.js.map +1 -0
  219. package/components/table/parse/parseHeaders.d.ts +4 -0
  220. package/components/table/parse/parseHeaders.js +89 -0
  221. package/components/table/parse/parseHeaders.js.map +1 -0
  222. package/components/table/parse/parseRows.d.ts +3 -0
  223. package/components/table/parse/parseRows.js +93 -0
  224. package/components/table/parse/parseRows.js.map +1 -0
  225. package/components/table/parse/tableChildGuards.d.ts +25 -0
  226. package/components/table/parse/tableChildGuards.js +29 -0
  227. package/components/table/parse/tableChildGuards.js.map +1 -0
  228. package/components/table/render/body/TableBodyRow.d.ts +16 -0
  229. package/components/table/render/body/TableBodyRow.js +84 -0
  230. package/components/table/render/body/TableBodyRow.js.map +1 -0
  231. package/components/table/render/body/TableBodySection.d.ts +20 -0
  232. package/components/table/render/body/TableBodySection.js +68 -0
  233. package/components/table/render/body/TableBodySection.js.map +1 -0
  234. package/components/table/render/body/TableDataRow.d.ts +15 -0
  235. package/components/table/render/body/TableDataRow.js +143 -0
  236. package/components/table/render/body/TableDataRow.js.map +1 -0
  237. package/components/table/render/body/TableEmptyRow.d.ts +7 -0
  238. package/components/table/render/body/TableEmptyRow.js +6 -0
  239. package/components/table/render/body/TableEmptyRow.js.map +1 -0
  240. package/components/table/render/body/TableExpandedRow.d.ts +8 -0
  241. package/components/table/render/body/TableExpandedRow.js +84 -0
  242. package/components/table/render/body/TableExpandedRow.js.map +1 -0
  243. package/components/table/render/body/TableGroupRow.d.ts +8 -0
  244. package/components/table/render/body/TableGroupRow.js +21 -0
  245. package/components/table/render/body/TableGroupRow.js.map +1 -0
  246. package/components/table/render/body/TableSpacerRow.d.ts +7 -0
  247. package/components/table/render/body/TableSpacerRow.js +15 -0
  248. package/components/table/render/body/TableSpacerRow.js.map +1 -0
  249. package/components/table/render/footer/TableFooterCell.d.ts +8 -0
  250. package/components/table/render/footer/TableFooterCell.js +31 -0
  251. package/components/table/render/footer/TableFooterCell.js.map +1 -0
  252. package/components/table/render/footer/TableFooterContent.d.ts +6 -0
  253. package/components/table/render/footer/TableFooterContent.js +6 -0
  254. package/components/table/render/footer/TableFooterContent.js.map +1 -0
  255. package/components/table/render/footer/TableFooterSection.d.ts +10 -0
  256. package/components/table/render/footer/TableFooterSection.js +28 -0
  257. package/components/table/render/footer/TableFooterSection.js.map +1 -0
  258. package/components/table/render/header/TableBatchDropdown.d.ts +9 -0
  259. package/components/table/render/header/TableBatchDropdown.js +28 -0
  260. package/components/table/render/header/TableBatchDropdown.js.map +1 -0
  261. package/components/table/render/header/TableColumnFilter.d.ts +66 -0
  262. package/components/table/render/header/TableColumnFilter.js +70 -0
  263. package/components/table/render/header/TableColumnFilter.js.map +1 -0
  264. package/components/table/render/header/TableDraggableHeaderCell.d.ts +3 -0
  265. package/components/table/render/header/TableDraggableHeaderCell.js +54 -0
  266. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -0
  267. package/components/table/render/header/TableHeader.types.d.ts +35 -0
  268. package/components/table/render/header/TableHeaderCellContent.d.ts +3 -0
  269. package/components/table/render/header/TableHeaderCellContent.js +57 -0
  270. package/components/table/render/header/TableHeaderCellContent.js.map +1 -0
  271. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +3 -0
  272. package/components/table/render/header/TableHeaderCellResizeHandle.js +22 -0
  273. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -0
  274. package/components/table/render/header/TableHeaderDragOverlay.d.ts +13 -0
  275. package/components/table/render/header/TableHeaderDragOverlay.js +35 -0
  276. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -0
  277. package/components/table/render/header/TableHeaderSection.d.ts +3 -0
  278. package/components/table/render/header/TableHeaderSection.js +104 -0
  279. package/components/table/render/header/TableHeaderSection.js.map +1 -0
  280. package/components/table/render/header/TableHeaderSelectionCell.d.ts +9 -0
  281. package/components/table/render/header/TableHeaderSelectionCell.js +41 -0
  282. package/components/table/render/header/TableHeaderSelectionCell.js.map +1 -0
  283. package/components/table/render/header/TableStaticHeaderCell.d.ts +3 -0
  284. package/components/table/render/header/TableStaticHeaderCell.js +36 -0
  285. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -0
  286. package/components/table/render/header/resolveAriaSort.d.ts +2 -0
  287. package/components/table/render/header/resolveAriaSort.js +8 -0
  288. package/components/table/render/header/resolveAriaSort.js.map +1 -0
  289. package/components/table/render/header/resolveColumnCollisionDetection.d.ts +2 -0
  290. package/components/table/render/header/resolveColumnCollisionDetection.js +9 -0
  291. package/components/table/render/header/resolveColumnCollisionDetection.js.map +1 -0
  292. package/components/table/render/header/resolveHeaderCellClassName.d.ts +10 -0
  293. package/components/table/render/header/resolveHeaderCellClassName.js +22 -0
  294. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -0
  295. package/components/table/render/header/resolveHeaderCellStyle.d.ts +829 -0
  296. package/components/table/render/header/resolveHeaderCellStyle.js +9 -0
  297. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -0
  298. package/components/table/selection/useTableSelection.d.ts +82 -0
  299. package/components/table/selection/useTableSelection.js +35 -0
  300. package/components/table/selection/useTableSelection.js.map +1 -0
  301. package/components/table/settings/TableColumnsDropdown.d.ts +90 -0
  302. package/components/table/settings/TableColumnsDropdown.js +137 -0
  303. package/components/table/settings/TableColumnsDropdown.js.map +1 -0
  304. package/components/table/settings/TableColumnsDropdownItem.d.ts +8 -0
  305. package/components/table/settings/TableColumnsDropdownItem.js +66 -0
  306. package/components/table/settings/TableColumnsDropdownItem.js.map +1 -0
  307. package/components/table/shared/getAlignClassName.d.ts +3 -0
  308. package/components/table/shared/getAlignClassName.js +6 -0
  309. package/components/table/shared/getAlignClassName.js.map +1 -0
  310. package/components/table/shared/getInteractiveRowProps.d.ts +14 -0
  311. package/components/table/shared/getInteractiveRowProps.js +15 -0
  312. package/components/table/shared/getInteractiveRowProps.js.map +1 -0
  313. package/components/table/shared/resolveTableAria.d.ts +2 -0
  314. package/components/table/shared/resolveTableAria.js +6 -0
  315. package/components/table/shared/resolveTableAria.js.map +1 -0
  316. package/components/table/tableSizing.constants.d.ts +4 -0
  317. package/components/table/tableSizing.constants.js +8 -0
  318. package/components/table/tableSizing.constants.js.map +1 -0
  319. package/components/teaser/TeaserContainer.js +3 -3
  320. package/components/teaser/TeaserContainer.js.map +1 -1
  321. package/components/virtualList/VirtualList.js +16 -13
  322. package/components/virtualList/VirtualList.js.map +1 -1
  323. package/googleAnalyticsUtils.d.ts +1 -0
  324. package/googleAnalyticsUtils.js +9 -0
  325. package/googleAnalyticsUtils.js.map +1 -0
  326. package/hooks/useCookies.js +17 -17
  327. package/hooks/useCookies.js.map +1 -1
  328. package/hooks/useDraggableElement.d.ts +35 -0
  329. package/hooks/useDraggableElement.js +49 -0
  330. package/hooks/useDraggableElement.js.map +1 -0
  331. package/hooks/useElapsedTime.js +4 -4
  332. package/hooks/useElapsedTime.js.map +1 -1
  333. package/hooks/useLocationSuggestions.js +13 -10
  334. package/hooks/useLocationSuggestions.js.map +1 -1
  335. package/hooks/useMergeRefs.js +12 -12
  336. package/hooks/useMergeRefs.js.map +1 -1
  337. package/hooks/usePrevious.d.ts +1 -1
  338. package/hooks/usePrevious.js.map +1 -1
  339. package/hooks/useResizeObserver.js +25 -10
  340. package/hooks/useResizeObserver.js.map +1 -1
  341. package/hooks/useRioCookieConsent.js +7 -4
  342. package/hooks/useRioCookieConsent.js.map +1 -1
  343. package/hooks/useSorting.js +10 -10
  344. package/hooks/useSorting.js.map +1 -1
  345. package/hooks/useStorage.js +12 -12
  346. package/hooks/useStorage.js.map +1 -1
  347. package/hooks/useSum.js +10 -7
  348. package/hooks/useSum.js.map +1 -1
  349. package/hooks/useTableSelection.js.map +1 -1
  350. package/hooks/useTimeout.js +6 -3
  351. package/hooks/useTimeout.js.map +1 -1
  352. package/package.json +3 -3
  353. package/routeUtils.js +12 -10
  354. package/utils/analytics/analyticsAnalysisUtils.d.ts +27 -0
  355. package/utils/analytics/analyticsAnalysisUtils.js +161 -0
  356. package/utils/analytics/analyticsAnalysisUtils.js.map +1 -0
  357. package/utils/analytics/autoTracking.d.ts +14 -0
  358. package/utils/analytics/autoTracking.js +19 -0
  359. package/utils/analytics/autoTracking.js.map +1 -0
  360. package/utils/analytics/createAnalyticsOverlayTooltip.d.ts +36 -0
  361. package/utils/analytics/createAnalyticsOverlayTooltip.js +203 -0
  362. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -0
  363. package/utils/analytics/googleAnalyticsUtils.d.ts +37 -0
  364. package/utils/analytics/googleAnalyticsUtils.js +37 -0
  365. package/utils/analytics/googleAnalyticsUtils.js.map +1 -0
  366. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.d.ts +8 -0
  367. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js +61 -0
  368. package/utils/analytics/logAnalyticsOverlayUnmatchedEntries.js.map +1 -0
  369. package/utils/analytics/useAnalyticsOverlayDom.d.ts +11 -0
  370. package/utils/analytics/useAnalyticsOverlayDom.js +120 -0
  371. package/utils/analytics/useAnalyticsOverlayDom.js.map +1 -0
  372. package/utils/arrayMove.js +11 -0
  373. package/utils/arrayMove.js.map +1 -0
  374. package/utils/cssuseragent.js +2 -2
  375. package/utils/cssuseragent.js.map +1 -1
  376. package/utils/deviceUtils.js.map +1 -1
  377. package/utils/formatUtils.js.map +1 -1
  378. package/utils/hasUtilityClass.js +3 -3
  379. package/utils/hasUtilityClass.js.map +1 -1
  380. package/utils/hidePiiData.js.map +1 -1
  381. package/utils/init/checkForReleaseVersion.js +4 -4
  382. package/utils/init/checkForReleaseVersion.js.map +1 -1
  383. package/utils/init/styledLogs.js.map +1 -1
  384. package/utils/mergeRefs.js +3 -3
  385. package/utils/mergeRefs.js.map +1 -1
  386. package/utils/routeUtils.d.ts +32 -1
  387. package/utils/routeUtils.js +85 -67
  388. package/utils/routeUtils.js.map +1 -1
  389. package/utils/storageUtils.js +9 -9
  390. package/utils/storageUtils.js.map +1 -1
  391. package/version.d.ts +1 -1
  392. package/version.js +2 -2
  393. package/version.js.map +1 -1
  394. package/components/table/TableCol.js.map +0 -1
  395. package/components/table/TableHead.js.map +0 -1
  396. package/components/table/TableSettingsColumnButtons.js +0 -45
  397. package/components/table/TableSettingsColumnButtons.js.map +0 -1
  398. package/components/table/TableSettingsColumnDetails.js.map +0 -1
  399. package/components/table/TableSettingsDialog.js +0 -208
  400. package/components/table/TableSettingsDialog.js.map +0 -1
  401. package/components/table/TableSettingsDialogFooter.js.map +0 -1
  402. package/components/table/TableSettingsListContainer.js.map +0 -1
  403. package/components/table/TableSettingsListItem.js +0 -96
  404. package/components/table/TableSettingsListItem.js.map +0 -1
  405. /package/components/table/{TableCol.d.ts → native/TableCol.d.ts} +0 -0
  406. /package/components/table/{TableCol.js → native/TableCol.js} +0 -0
  407. /package/components/table/{TableHead.d.ts → native/TableHead.d.ts} +0 -0
  408. /package/components/table/{TableSettingsColumnButtons.d.ts → native/TableSettingsColumnButtons.d.ts} +0 -0
  409. /package/components/table/{TableSettingsColumnDetails.d.ts → native/TableSettingsColumnDetails.d.ts} +0 -0
  410. /package/components/table/{TableSettingsDialogFooter.d.ts → native/TableSettingsDialogFooter.d.ts} +0 -0
  411. /package/components/table/{TableSettingsListContainer.d.ts → native/TableSettingsListContainer.d.ts} +0 -0
  412. /package/components/table/{TableSettingsListItem.d.ts → native/TableSettingsListItem.d.ts} +0 -0
@@ -1,95 +1,67 @@
1
- import { jsxs as E, jsx as t } from "react/jsx-runtime";
2
- import { useState as f, useEffect as g } from "react";
3
- import { noop as _ } from "es-toolkit/compat";
4
- import u from "../../utils/classNames.js";
5
- import A from "../overlay/OverlayTrigger.js";
6
- import I from "../tooltip/Tooltip.js";
7
- const L = (i, e) => /* @__PURE__ */ t(
8
- A,
9
- {
10
- placement: "bottom",
11
- overlay: /* @__PURE__ */ t(I, { id: "tooltip", allowOnTouch: !0, children: i }),
12
- children: e
13
- }
14
- ), h = {
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { useState as y, useEffect as N } from "react";
3
+ import { noop as u } from "es-toolkit/compat";
4
+ import S from "../../utils/classNames.js";
5
+ import f from "../selects/Select.js";
6
+ const o = {
15
7
  TABLE: "rioglyph-table-view",
16
8
  SINGLE_CARD: "rioglyph-th-list",
17
9
  MULTI_CARDS: "rioglyph-split-view"
18
- }, w = (i) => {
19
- const { viewType: e, currentViewType: s, disabledViewTypes: n, tooltipContent: l, onClick: r, disabled: p } = i;
20
- if (n.includes(e))
21
- return null;
22
- const a = u(
23
- "btn btn-default btn-icon-only",
24
- p && "disabled pointer-events-none",
25
- e === s && "active"
26
- ), o = /* @__PURE__ */ t("button", { className: a, type: "button", onClick: () => r(e), children: /* @__PURE__ */ t("span", { className: `rioglyph ${h[e]}` }) });
27
- return l ? L(l, o) : o;
28
- }, y = (i) => {
10
+ }, s = (r) => {
29
11
  const {
30
- viewType: e,
31
- initialViewType: s = "TABLE",
32
- disabledViewTypes: n = [],
33
- onViewTypeChange: l = _,
34
- tableViewTooltipContent: r,
35
- singleCardViewTooltipContent: p,
36
- multiCardsViewTooltipContent: a,
37
- disabled: o = !1,
38
- className: C,
39
- ...V
40
- } = i, [T, d] = f(s);
41
- g(() => {
42
- e && d(e);
43
- }, [e]);
44
- const c = (m) => {
45
- d(m), l(m);
46
- }, b = u(
47
- "TableViewToggles",
48
- "btn-group",
49
- "display-flex",
50
- "flex-row",
51
- C && C
52
- );
53
- return /* @__PURE__ */ E("div", { ...V, className: b, children: [
54
- /* @__PURE__ */ t(
55
- w,
56
- {
57
- viewType: "TABLE",
58
- currentViewType: T,
59
- disabledViewTypes: n,
60
- tooltipContent: r,
61
- onClick: c,
62
- disabled: o
63
- }
64
- ),
65
- /* @__PURE__ */ t(
66
- w,
67
- {
68
- viewType: "SINGLE_CARD",
69
- currentViewType: T,
70
- disabledViewTypes: n,
71
- tooltipContent: p,
72
- onClick: c,
73
- disabled: o
74
- }
75
- ),
76
- /* @__PURE__ */ t(
77
- w,
78
- {
79
- viewType: "MULTI_CARDS",
80
- currentViewType: T,
81
- disabledViewTypes: n,
82
- tooltipContent: a,
83
- onClick: c,
84
- disabled: o
85
- }
86
- )
87
- ] });
12
+ viewType: l,
13
+ initialViewType: p = "TABLE",
14
+ disabledViewTypes: T = [],
15
+ onViewTypeChange: c = u,
16
+ tableViewTooltipContent: m,
17
+ tableViewLabel: d,
18
+ singleCardViewTooltipContent: w,
19
+ singleCardViewLabel: C,
20
+ multiCardsViewTooltipContent: L,
21
+ multiCardsViewLabel: g,
22
+ disabled: E = !1,
23
+ className: a,
24
+ ...I
25
+ } = r, [V, t] = y(p);
26
+ N(() => {
27
+ l && t(l);
28
+ }, [l]);
29
+ const b = (e) => {
30
+ t(e), c(e);
31
+ }, n = [
32
+ {
33
+ id: "TABLE",
34
+ label: d ?? m ?? "",
35
+ icon: /* @__PURE__ */ i("span", { className: `rioglyph ${o.TABLE}` })
36
+ },
37
+ {
38
+ id: "SINGLE_CARD",
39
+ label: C ?? w ?? "",
40
+ icon: /* @__PURE__ */ i("span", { className: `rioglyph ${o.SINGLE_CARD}` })
41
+ },
42
+ {
43
+ id: "MULTI_CARDS",
44
+ label: g ?? L ?? "",
45
+ icon: /* @__PURE__ */ i("span", { className: `rioglyph ${o.MULTI_CARDS}` })
46
+ }
47
+ ], A = n.filter((e) => !T.includes(e.id)), _ = n.some((e) => e.label), h = S("TableViewToggles", a && a);
48
+ return /* @__PURE__ */ i("div", { ...I, className: h, children: /* @__PURE__ */ i("div", { className: "form-group margin-bottom-0", children: /* @__PURE__ */ i(
49
+ f,
50
+ {
51
+ options: A,
52
+ value: [V],
53
+ onChange: (e) => e && b(e.id),
54
+ disabled: E,
55
+ showSelectedItemIcon: !0,
56
+ pullRight: !0,
57
+ dropdownClassName: _ ? void 0 : "width-auto"
58
+ }
59
+ ) }) });
88
60
  };
89
- y.VIEW_TYPE_TABLE = "TABLE";
90
- y.VIEW_TYPE_SINGLE_CARD = "SINGLE_CARD";
91
- y.VIEW_TYPE_MULTI_CARDS = "MULTI_CARDS";
61
+ s.VIEW_TYPE_TABLE = "TABLE";
62
+ s.VIEW_TYPE_SINGLE_CARD = "SINGLE_CARD";
63
+ s.VIEW_TYPE_MULTI_CARDS = "MULTI_CARDS";
92
64
  export {
93
- y as default
65
+ s as default
94
66
  };
95
67
  //# sourceMappingURL=TableViewToggles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableViewToggles.js","sources":["../../../src/components/table/TableViewToggles.tsx"],"sourcesContent":["import { type JSX, type ReactNode, useEffect, useState } from 'react';\nimport { noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport OverlayTrigger from '../overlay/OverlayTrigger';\nimport Tooltip from '../tooltip/Tooltip';\n\n// TODO: add responsive behaviour and trigger a change from table to list for small screen -> see DriverAdministration\n\nconst wrapWithTooltip = (tooltipContent: ReactNode, element: JSX.Element) => (\n <OverlayTrigger\n placement='bottom'\n overlay={\n <Tooltip id='tooltip' allowOnTouch>\n {tooltipContent}\n </Tooltip>\n }\n >\n {element}\n </OverlayTrigger>\n);\n\nconst typeIcons: Record<TableViewTogglesViewType, string> = {\n TABLE: 'rioglyph-table-view',\n SINGLE_CARD: 'rioglyph-th-list',\n MULTI_CARDS: 'rioglyph-split-view',\n};\n\ntype TypeButtonProps = {\n viewType: TableViewTogglesViewType;\n currentViewType: TableViewTogglesViewType;\n disabledViewTypes: TableViewTogglesViewType[];\n tooltipContent: ReactNode;\n onClick: (vt: TableViewTogglesViewType) => void;\n disabled: boolean;\n};\n\nconst TypeButton = (props: TypeButtonProps) => {\n const { viewType, currentViewType, disabledViewTypes, tooltipContent, onClick, disabled } = props;\n\n if (disabledViewTypes.includes(viewType)) {\n return null;\n }\n\n const classes = classNames(\n 'btn btn-default btn-icon-only',\n disabled && 'disabled pointer-events-none',\n viewType === currentViewType && 'active'\n );\n\n const button = (\n <button className={classes} type='button' onClick={() => onClick(viewType)}>\n <span className={`rioglyph ${typeIcons[viewType]}`} />\n </button>\n );\n\n return tooltipContent ? wrapWithTooltip(tooltipContent, button) : button;\n};\n\nexport type TableViewTogglesViewType = 'SINGLE_CARD' | 'MULTI_CARDS' | 'TABLE';\n\nexport type TableViewTogglesProps = {\n /**\n * The current viewType for controlling the TablesViewToggles component.\n *\n * Possible values are:\n *\n * - `'SINGLE_CARD'`\n * - `'MULTI_CARDS'`\n * - `'TABLE'`\n * - `TableViewToggles.VIEW_TYPE_TABLE`\n * - `TableViewToggles.VIEW_TYPE_SINGLE_CARD`\n * - `TableViewToggles.VIEW_TYPE_CARD`\n */\n viewType?: TableViewTogglesViewType;\n\n /**\n * Defines the initial viewType (when viewType is not controlled from the outside).\n *\n * Possible values are:\n *\n * - `'SINGLE_CARD'`\n * - `'MULTI_CARDS'`\n * - `'TABLE'`\n * - `TableViewToggles.VIEW_TYPE_TABLE`\n * - `TableViewToggles.VIEW_TYPE_SINGLE_CARD`\n * - `TableViewToggles.VIEW_TYPE_CARD`\n *\n * @default TableViewToggles.VIEW_TYPE\n */\n initialViewType?: TableViewTogglesViewType;\n\n /**\n * Defines the view types which shall not be supported and are omitted.\n *\n * @default []\n */\n disabledViewTypes?: TableViewTogglesViewType[];\n\n /**\n * Callback function for when the user wants to change the viewType.\n *\n * Receives the new type as an argument.\n *\n * @param viewType The new viewType selected by the user.\n */\n onViewTypeChange: (viewType: TableViewTogglesViewType) => void;\n\n /**\n * Optional tooltip content for table view button.\n */\n tableViewTooltipContent?: string | ReactNode;\n\n /**\n * Optional tooltip content for single card view button.\n */\n singleCardViewTooltipContent?: string | ReactNode;\n\n /**\n * Optional tooltip content for multi card view button.\n */\n multiCardsViewTooltipContent?: string | ReactNode;\n\n /**\n * Disables all buttons.\n *\n * This means the buttons cannot be clicked. Used when disabling toolbar buttons during loading state or when the\n * corresponding table is empty.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Optional class names for the wrapper element.\n */\n className?: string;\n};\n\nconst TableViewToggles = (props: TableViewTogglesProps) => {\n const {\n viewType,\n initialViewType = 'TABLE',\n disabledViewTypes = [],\n onViewTypeChange = noop,\n tableViewTooltipContent,\n singleCardViewTooltipContent,\n multiCardsViewTooltipContent,\n disabled = false,\n className,\n ...remainingProps\n } = props;\n\n const [internalViewType, setInternalViewType] = useState(initialViewType);\n\n // update internal state when external state changes - controlled component case\n useEffect(() => {\n if (viewType) {\n setInternalViewType(viewType);\n }\n }, [viewType]);\n\n const setViewType = (vt: TableViewTogglesViewType) => {\n setInternalViewType(vt);\n onViewTypeChange(vt);\n };\n\n const wrapperClassNames = classNames(\n 'TableViewToggles',\n 'btn-group',\n 'display-flex',\n 'flex-row',\n className && className\n );\n\n return (\n <div {...remainingProps} className={wrapperClassNames}>\n <TypeButton\n viewType='TABLE'\n currentViewType={internalViewType}\n disabledViewTypes={disabledViewTypes}\n tooltipContent={tableViewTooltipContent}\n onClick={setViewType}\n disabled={disabled}\n />\n\n <TypeButton\n viewType='SINGLE_CARD'\n currentViewType={internalViewType}\n disabledViewTypes={disabledViewTypes}\n tooltipContent={singleCardViewTooltipContent}\n onClick={setViewType}\n disabled={disabled}\n />\n\n <TypeButton\n viewType='MULTI_CARDS'\n currentViewType={internalViewType}\n disabledViewTypes={disabledViewTypes}\n tooltipContent={multiCardsViewTooltipContent}\n onClick={setViewType}\n disabled={disabled}\n />\n </div>\n );\n};\n\n// Don't export values as string but as a distinct union type\nTableViewToggles.VIEW_TYPE_TABLE = 'TABLE' as TableViewTogglesViewType;\nTableViewToggles.VIEW_TYPE_SINGLE_CARD = 'SINGLE_CARD' as TableViewTogglesViewType;\nTableViewToggles.VIEW_TYPE_MULTI_CARDS = 'MULTI_CARDS' as TableViewTogglesViewType;\n\nexport default TableViewToggles;\n"],"names":["wrapWithTooltip","tooltipContent","element","jsx","OverlayTrigger","Tooltip","typeIcons","TypeButton","props","viewType","currentViewType","disabledViewTypes","onClick","disabled","classes","classNames","button","TableViewToggles","initialViewType","onViewTypeChange","noop","tableViewTooltipContent","singleCardViewTooltipContent","multiCardsViewTooltipContent","className","remainingProps","internalViewType","setInternalViewType","useState","useEffect","setViewType","vt","wrapperClassNames","jsxs"],"mappings":";;;;;;AASA,MAAMA,IAAkB,CAACC,GAA2BC,MAChD,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACG,WAAU;AAAA,IACV,SACI,gBAAAD,EAACE,GAAA,EAAQ,IAAG,WAAU,cAAY,IAC7B,UAAAJ,GACL;AAAA,IAGH,UAAAC;AAAA,EAAA;AACL,GAGEI,IAAsD;AAAA,EACxD,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACjB,GAWMC,IAAa,CAACC,MAA2B;AAC3C,QAAM,EAAE,UAAAC,GAAU,iBAAAC,GAAiB,mBAAAC,GAAmB,gBAAAV,GAAgB,SAAAW,GAAS,UAAAC,MAAaL;AAE5F,MAAIG,EAAkB,SAASF,CAAQ;AACnC,WAAO;AAGX,QAAMK,IAAUC;AAAA,IACZ;AAAA,IACAF,KAAY;AAAA,IACZJ,MAAaC,KAAmB;AAAA,EAAA,GAG9BM,sBACD,UAAA,EAAO,WAAWF,GAAS,MAAK,UAAS,SAAS,MAAMF,EAAQH,CAAQ,GACrE,UAAA,gBAAAN,EAAC,UAAK,WAAW,YAAYG,EAAUG,CAAQ,CAAC,IAAI,EAAA,CACxD;AAGJ,SAAOR,IAAiBD,EAAgBC,GAAgBe,CAAM,IAAIA;AACtE,GAkFMC,IAAmB,CAACT,MAAiC;AACvD,QAAM;AAAA,IACF,UAAAC;AAAA,IACA,iBAAAS,IAAkB;AAAA,IAClB,mBAAAP,IAAoB,CAAA;AAAA,IACpB,kBAAAQ,IAAmBC;AAAA,IACnB,yBAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,UAAAV,IAAW;AAAA,IACX,WAAAW;AAAA,IACA,GAAGC;AAAA,EAAA,IACHjB,GAEE,CAACkB,GAAkBC,CAAmB,IAAIC,EAASV,CAAe;AAGxE,EAAAW,EAAU,MAAM;AACZ,IAAIpB,KACAkB,EAAoBlB,CAAQ;AAAA,EAEpC,GAAG,CAACA,CAAQ,CAAC;AAEb,QAAMqB,IAAc,CAACC,MAAiC;AAClD,IAAAJ,EAAoBI,CAAE,GACtBZ,EAAiBY,CAAE;AAAA,EACvB,GAEMC,IAAoBjB;AAAA,IACtB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACAS,KAAaA;AAAA,EAAA;AAGjB,SACI,gBAAAS,EAAC,OAAA,EAAK,GAAGR,GAAgB,WAAWO,GAChC,UAAA;AAAA,IAAA,gBAAA7B;AAAA,MAACI;AAAA,MAAA;AAAA,QACG,UAAS;AAAA,QACT,iBAAiBmB;AAAA,QACjB,mBAAAf;AAAA,QACA,gBAAgBU;AAAA,QAChB,SAASS;AAAA,QACT,UAAAjB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,gBAAAV;AAAA,MAACI;AAAA,MAAA;AAAA,QACG,UAAS;AAAA,QACT,iBAAiBmB;AAAA,QACjB,mBAAAf;AAAA,QACA,gBAAgBW;AAAA,QAChB,SAASQ;AAAA,QACT,UAAAjB;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJ,gBAAAV;AAAA,MAACI;AAAA,MAAA;AAAA,QACG,UAAS;AAAA,QACT,iBAAiBmB;AAAA,QACjB,mBAAAf;AAAA,QACA,gBAAgBY;AAAA,QAChB,SAASO;AAAA,QACT,UAAAjB;AAAA,MAAA;AAAA,IAAA;AAAA,EACJ,GACJ;AAER;AAGAI,EAAiB,kBAAkB;AACnCA,EAAiB,wBAAwB;AACzCA,EAAiB,wBAAwB;"}
1
+ {"version":3,"file":"TableViewToggles.js","sources":["../../../src/components/table/TableViewToggles.tsx"],"sourcesContent":["import { type ReactNode, useEffect, useState } from 'react';\nimport { noop } from 'es-toolkit/compat';\n\nimport classNames from '../../utils/classNames';\nimport Select, { type SelectOption } from '../selects/Select';\n\n// TODO: add responsive behaviour and trigger a change from table to list for small screen -> see DriverAdministration\n\nconst typeIcons: Record<TableViewTogglesViewType, string> = {\n TABLE: 'rioglyph-table-view',\n SINGLE_CARD: 'rioglyph-th-list',\n MULTI_CARDS: 'rioglyph-split-view',\n};\n\ntype TableViewToggleOption = SelectOption & {\n id: TableViewTogglesViewType;\n};\n\nexport type TableViewTogglesViewType = 'SINGLE_CARD' | 'MULTI_CARDS' | 'TABLE';\n\nexport type TableViewTogglesProps = {\n /**\n * The current viewType for controlling the TablesViewToggles component.\n *\n * Possible values are:\n *\n * - `'SINGLE_CARD'`\n * - `'MULTI_CARDS'`\n * - `'TABLE'`\n * - `TableViewToggles.VIEW_TYPE_TABLE`\n * - `TableViewToggles.VIEW_TYPE_SINGLE_CARD`\n * - `TableViewToggles.VIEW_TYPE_CARD`\n */\n viewType?: TableViewTogglesViewType;\n\n /**\n * Defines the initial viewType (when viewType is not controlled from the outside).\n *\n * Possible values are:\n *\n * - `'SINGLE_CARD'`\n * - `'MULTI_CARDS'`\n * - `'TABLE'`\n * - `TableViewToggles.VIEW_TYPE_TABLE`\n * - `TableViewToggles.VIEW_TYPE_SINGLE_CARD`\n * - `TableViewToggles.VIEW_TYPE_CARD`\n *\n * @default TableViewToggles.VIEW_TYPE\n */\n initialViewType?: TableViewTogglesViewType;\n\n /**\n * Defines the view types which shall not be supported and are omitted.\n *\n * @default []\n */\n disabledViewTypes?: TableViewTogglesViewType[];\n\n /**\n * Callback function for when the user wants to change the viewType.\n *\n * Receives the new type as an argument.\n *\n * @param viewType The new viewType selected by the user.\n */\n onViewTypeChange: (viewType: TableViewTogglesViewType) => void;\n\n /**\n * Optional tooltip content for table view button.\n *\n * @deprecated Use `tableViewLabel` instead.\n */\n tableViewTooltipContent?: string | ReactNode;\n\n /**\n * Optional label content for the table view select item.\n */\n tableViewLabel?: string | ReactNode;\n\n /**\n * Optional tooltip content for single card view button.\n *\n * @deprecated Use `singleCardViewLabel` instead.\n */\n singleCardViewTooltipContent?: string | ReactNode;\n\n /**\n * Optional label content for the single card view select item.\n */\n singleCardViewLabel?: string | ReactNode;\n\n /**\n * Optional tooltip content for multi card view button.\n *\n * @deprecated Use `multiCardsViewLabel` instead.\n */\n multiCardsViewTooltipContent?: string | ReactNode;\n\n /**\n * Optional label content for the multi cards view select item.\n */\n multiCardsViewLabel?: string | ReactNode;\n\n /**\n * Disables all buttons.\n *\n * This means the buttons cannot be clicked. Used when disabling toolbar buttons during loading state or when the\n * corresponding table is empty.\n *\n * @default false\n */\n disabled?: boolean;\n\n /**\n * Optional class names for the wrapper element.\n */\n className?: string;\n};\n\nconst TableViewToggles = (props: TableViewTogglesProps) => {\n const {\n viewType,\n initialViewType = 'TABLE',\n disabledViewTypes = [],\n onViewTypeChange = noop,\n tableViewTooltipContent,\n tableViewLabel,\n singleCardViewTooltipContent,\n singleCardViewLabel,\n multiCardsViewTooltipContent,\n multiCardsViewLabel,\n disabled = false,\n className,\n ...remainingProps\n } = props;\n\n const [internalViewType, setInternalViewType] = useState(initialViewType);\n\n // update internal state when external state changes - controlled component case\n useEffect(() => {\n if (viewType) {\n setInternalViewType(viewType);\n }\n }, [viewType]);\n\n const setViewType = (vt: TableViewTogglesViewType) => {\n setInternalViewType(vt);\n onViewTypeChange(vt);\n };\n\n const allOptions: TableViewToggleOption[] = [\n {\n id: 'TABLE',\n label: tableViewLabel ?? tableViewTooltipContent ?? '',\n icon: <span className={`rioglyph ${typeIcons.TABLE}`} />,\n },\n {\n id: 'SINGLE_CARD',\n label: singleCardViewLabel ?? singleCardViewTooltipContent ?? '',\n icon: <span className={`rioglyph ${typeIcons.SINGLE_CARD}`} />,\n },\n {\n id: 'MULTI_CARDS',\n label: multiCardsViewLabel ?? multiCardsViewTooltipContent ?? '',\n icon: <span className={`rioglyph ${typeIcons.MULTI_CARDS}`} />,\n },\n ];\n\n const options = allOptions.filter(option => !disabledViewTypes.includes(option.id));\n const hasOptionLabels = allOptions.some(option => option.label);\n\n const wrapperClassNames = classNames('TableViewToggles', className && className);\n\n return (\n <div {...remainingProps} className={wrapperClassNames}>\n <div className='form-group margin-bottom-0'>\n <Select\n options={options}\n value={[internalViewType]}\n onChange={item => item && setViewType(item.id as TableViewTogglesViewType)}\n disabled={disabled}\n showSelectedItemIcon\n pullRight\n dropdownClassName={!hasOptionLabels ? 'width-auto' : undefined}\n />\n </div>\n </div>\n );\n};\n\n// Don't export values as string but as a distinct union type\nTableViewToggles.VIEW_TYPE_TABLE = 'TABLE' as TableViewTogglesViewType;\nTableViewToggles.VIEW_TYPE_SINGLE_CARD = 'SINGLE_CARD' as TableViewTogglesViewType;\nTableViewToggles.VIEW_TYPE_MULTI_CARDS = 'MULTI_CARDS' as TableViewTogglesViewType;\n\nexport default TableViewToggles;\n"],"names":["typeIcons","TableViewToggles","props","viewType","initialViewType","disabledViewTypes","onViewTypeChange","noop","tableViewTooltipContent","tableViewLabel","singleCardViewTooltipContent","singleCardViewLabel","multiCardsViewTooltipContent","multiCardsViewLabel","disabled","className","remainingProps","internalViewType","setInternalViewType","useState","useEffect","setViewType","vt","allOptions","jsx","options","option","hasOptionLabels","wrapperClassNames","classNames","Select","item"],"mappings":";;;;;AAQA,MAAMA,IAAsD;AAAA,EACxD,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACjB,GA2GMC,IAAmB,CAACC,MAAiC;AACvD,QAAM;AAAA,IACF,UAAAC;AAAA,IACA,iBAAAC,IAAkB;AAAA,IAClB,mBAAAC,IAAoB,CAAA;AAAA,IACpB,kBAAAC,IAAmBC;AAAA,IACnB,yBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACHd,GAEE,CAACe,GAAkBC,CAAmB,IAAIC,EAASf,CAAe;AAGxE,EAAAgB,EAAU,MAAM;AACZ,IAAIjB,KACAe,EAAoBf,CAAQ;AAAA,EAEpC,GAAG,CAACA,CAAQ,CAAC;AAEb,QAAMkB,IAAc,CAACC,MAAiC;AAClD,IAAAJ,EAAoBI,CAAE,GACtBhB,EAAiBgB,CAAE;AAAA,EACvB,GAEMC,IAAsC;AAAA,IACxC;AAAA,MACI,IAAI;AAAA,MACJ,OAAOd,KAAkBD,KAA2B;AAAA,MACpD,MAAM,gBAAAgB,EAAC,QAAA,EAAK,WAAW,YAAYxB,EAAU,KAAK,GAAA,CAAI;AAAA,IAAA;AAAA,IAE1D;AAAA,MACI,IAAI;AAAA,MACJ,OAAOW,KAAuBD,KAAgC;AAAA,MAC9D,MAAM,gBAAAc,EAAC,QAAA,EAAK,WAAW,YAAYxB,EAAU,WAAW,GAAA,CAAI;AAAA,IAAA;AAAA,IAEhE;AAAA,MACI,IAAI;AAAA,MACJ,OAAOa,KAAuBD,KAAgC;AAAA,MAC9D,MAAM,gBAAAY,EAAC,QAAA,EAAK,WAAW,YAAYxB,EAAU,WAAW,GAAA,CAAI;AAAA,IAAA;AAAA,EAChE,GAGEyB,IAAUF,EAAW,OAAO,CAAAG,MAAU,CAACrB,EAAkB,SAASqB,EAAO,EAAE,CAAC,GAC5EC,IAAkBJ,EAAW,KAAK,CAAAG,MAAUA,EAAO,KAAK,GAExDE,IAAoBC,EAAW,oBAAoBd,KAAaA,CAAS;AAE/E,SACI,gBAAAS,EAAC,SAAK,GAAGR,GAAgB,WAAWY,GAChC,UAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAU,8BACX,UAAA,gBAAAA;AAAA,IAACM;AAAA,IAAA;AAAA,MACG,SAAAL;AAAA,MACA,OAAO,CAACR,CAAgB;AAAA,MACxB,UAAU,CAAAc,MAAQA,KAAQV,EAAYU,EAAK,EAA8B;AAAA,MACzE,UAAAjB;AAAA,MACA,sBAAoB;AAAA,MACpB,WAAS;AAAA,MACT,mBAAoBa,IAAiC,SAAf;AAAA,IAAe;AAAA,EAAA,GAE7D,EAAA,CACJ;AAER;AAGA1B,EAAiB,kBAAkB;AACnCA,EAAiB,wBAAwB;AACzCA,EAAiB,wBAAwB;"}
@@ -0,0 +1,3 @@
1
+ import { TableColumnDefinition } from '../Table.types';
2
+ export declare const toCssSize: (value?: number | string) => string | undefined;
3
+ export declare const getColumnTrack: <RowType extends Record<string, unknown>>(column: TableColumnDefinition<RowType>, measuredMaxWidth?: string) => string;
@@ -0,0 +1,23 @@
1
+ import { MIN_COLUMN_WIDTH as i } from "../tableSizing.constants.js";
2
+ const o = (t) => {
3
+ if (t !== void 0)
4
+ return typeof t == "number" ? `${t}px` : t;
5
+ }, m = (t) => t.trim().endsWith("%"), c = (t) => {
6
+ const r = Number.parseFloat(t);
7
+ return Number.isFinite(r) ? r : void 0;
8
+ }, u = (t, r) => {
9
+ const n = o(t.width);
10
+ if (n) {
11
+ if (m(n)) {
12
+ const e = c(n);
13
+ return e !== void 0 ? `minmax(0, calc(var(--table-width) * ${e} / 100))` : `minmax(0, ${n})`;
14
+ }
15
+ return `minmax(0, ${n})`;
16
+ }
17
+ return r ? `minmax(${i}, ${r})` : `minmax(${i}, 1fr)`;
18
+ };
19
+ export {
20
+ u as getColumnTrack,
21
+ o as toCssSize
22
+ };
23
+ //# sourceMappingURL=columnSizing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"columnSizing.js","sources":["../../../../src/components/table/layout/columnSizing.ts"],"sourcesContent":["import type { TableColumnDefinition } from '../Table.types';\nimport { MIN_COLUMN_WIDTH } from '../tableSizing.constants';\n\nexport const toCssSize = (value?: number | string) => {\n if (value === undefined) {\n return;\n }\n\n return typeof value === 'number' ? `${value}px` : value;\n};\n\nconst isPercentSize = (value: string) => value.trim().endsWith('%');\nconst getPercentValue = (value: string) => {\n const percentValue = Number.parseFloat(value);\n\n return Number.isFinite(percentValue) ? percentValue : undefined;\n};\n\nexport const getColumnTrack = <RowType extends Record<string, unknown>>(\n column: TableColumnDefinition<RowType>,\n measuredMaxWidth?: string\n) => {\n const width = toCssSize(column.width);\n\n if (width) {\n if (isPercentSize(width)) {\n const percentValue = getPercentValue(width);\n\n if (percentValue !== undefined) {\n return `minmax(0, calc(var(--table-width) * ${percentValue} / 100))`;\n }\n\n return `minmax(0, ${width})`;\n }\n\n return `minmax(0, ${width})`;\n }\n\n if (measuredMaxWidth) {\n return `minmax(${MIN_COLUMN_WIDTH}, ${measuredMaxWidth})`;\n }\n\n // Unconfigured columns should share the available width evenly\n // and be allowed to shrink with the table width.\n return `minmax(${MIN_COLUMN_WIDTH}, 1fr)`;\n};\n"],"names":["toCssSize","value","isPercentSize","getPercentValue","percentValue","getColumnTrack","column","measuredMaxWidth","width","MIN_COLUMN_WIDTH"],"mappings":";AAGO,MAAMA,IAAY,CAACC,MAA4B;AAClD,MAAIA,MAAU;AAId,WAAO,OAAOA,KAAU,WAAW,GAAGA,CAAK,OAAOA;AACtD,GAEMC,IAAgB,CAACD,MAAkBA,EAAM,KAAA,EAAO,SAAS,GAAG,GAC5DE,IAAkB,CAACF,MAAkB;AACvC,QAAMG,IAAe,OAAO,WAAWH,CAAK;AAE5C,SAAO,OAAO,SAASG,CAAY,IAAIA,IAAe;AAC1D,GAEaC,IAAiB,CAC1BC,GACAC,MACC;AACD,QAAMC,IAAQR,EAAUM,EAAO,KAAK;AAEpC,MAAIE,GAAO;AACP,QAAIN,EAAcM,CAAK,GAAG;AACtB,YAAMJ,IAAeD,EAAgBK,CAAK;AAE1C,aAAIJ,MAAiB,SACV,uCAAuCA,CAAY,aAGvD,aAAaI,CAAK;AAAA,IAC7B;AAEA,WAAO,aAAaA,CAAK;AAAA,EAC7B;AAEA,SAAID,IACO,UAAUE,CAAgB,KAAKF,CAAgB,MAKnD,UAAUE,CAAgB;AACrC;"}
@@ -0,0 +1,14 @@
1
+ import { DragEndEvent } from '@dnd-kit/core';
2
+ import { TableColumnDefinition } from '../Table.types';
3
+ type UseDraggableColumnsProps<RowType extends Record<string, unknown>> = {
4
+ columns: TableColumnDefinition<RowType>[];
5
+ columnOrder?: string[];
6
+ enabled: boolean;
7
+ onColumnOrderChange?: (columnOrder: string[]) => void;
8
+ };
9
+ export declare const useDraggableColumns: <RowType extends Record<string, unknown>>(props: UseDraggableColumnsProps<RowType>) => {
10
+ draggableColumnKeys: (string | Extract<keyof RowType, string>)[];
11
+ handleColumnDragEnd: (event: DragEndEvent) => void;
12
+ orderedColumns: TableColumnDefinition<RowType>[];
13
+ };
14
+ export {};
@@ -0,0 +1,47 @@
1
+ import { useState as D, useEffect as v } from "react";
2
+ import h from "../../../utils/arrayMove.js";
3
+ const K = (s, o) => {
4
+ const l = o.map((n) => n.key), i = new Set(l), a = s.filter((n) => i.has(n)), u = l.filter((n) => !a.includes(n));
5
+ return [...a, ...u];
6
+ }, O = (s) => s.draggable !== !1, E = (s) => {
7
+ const { columns: o, columnOrder: l, enabled: i, onColumnOrderChange: a } = s, [u, n] = D(() => o.map((e) => e.key)), p = K(l ?? u, o), d = l !== void 0;
8
+ v(() => {
9
+ d || n((e) => {
10
+ const r = K(e, o);
11
+ return JSON.stringify(e) === JSON.stringify(r) ? e : r;
12
+ });
13
+ }, [o, d]);
14
+ const S = new Map(o.map((e) => [e.key, e])), m = p.flatMap((e) => {
15
+ const r = S.get(e);
16
+ return r ? [r] : [];
17
+ }), c = m.filter(O).map((e) => e.key);
18
+ return {
19
+ draggableColumnKeys: c,
20
+ handleColumnDragEnd: (e) => {
21
+ if (!i)
22
+ return;
23
+ const r = String(e.active.id), y = e.over ? String(e.over.id) : void 0;
24
+ if (!y || r === y)
25
+ return;
26
+ const f = c.indexOf(r), C = c.indexOf(y);
27
+ if (f < 0 || C < 0)
28
+ return;
29
+ const b = h(c, f, C);
30
+ let x = 0;
31
+ const g = m.map((t) => {
32
+ if (!O(t))
33
+ return t.key;
34
+ const k = b[x];
35
+ return x += 1, k ?? t.key;
36
+ });
37
+ d || n(
38
+ (t) => JSON.stringify(t) === JSON.stringify(g) ? t : g
39
+ ), a?.(g);
40
+ },
41
+ orderedColumns: m
42
+ };
43
+ };
44
+ export {
45
+ E as useDraggableColumns
46
+ };
47
+ //# sourceMappingURL=useDraggableColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDraggableColumns.js","sources":["../../../../src/components/table/layout/useDraggableColumns.ts"],"sourcesContent":["import type { DragEndEvent } from '@dnd-kit/core';\nimport { useEffect, useState } from 'react';\n\nimport arrayMove from '../../../utils/arrayMove';\nimport type { TableColumnDefinition } from '../Table.types';\n\ntype UseDraggableColumnsProps<RowType extends Record<string, unknown>> = {\n columns: TableColumnDefinition<RowType>[];\n columnOrder?: string[];\n enabled: boolean;\n onColumnOrderChange?: (columnOrder: string[]) => void;\n};\n\nconst reconcileColumnOrder = <RowType extends Record<string, unknown>>(\n previousColumnOrder: string[],\n columns: TableColumnDefinition<RowType>[]\n) => {\n const nextColumnKeys = columns.map(column => column.key);\n const previousColumnKeySet = new Set(nextColumnKeys);\n const preservedColumnOrder = previousColumnOrder.filter(columnKey => previousColumnKeySet.has(columnKey));\n const missingColumnKeys = nextColumnKeys.filter(columnKey => !preservedColumnOrder.includes(columnKey));\n\n return [...preservedColumnOrder, ...missingColumnKeys];\n};\n\nconst isColumnDraggable = <RowType extends Record<string, unknown>>(column: TableColumnDefinition<RowType>) =>\n column.draggable !== false;\n\nexport const useDraggableColumns = <RowType extends Record<string, unknown>>(\n props: UseDraggableColumnsProps<RowType>\n) => {\n const { columns, columnOrder, enabled, onColumnOrderChange } = props;\n const [uncontrolledColumnOrder, setUncontrolledColumnOrder] = useState(() => columns.map(column => column.key));\n const orderedColumnKeys = reconcileColumnOrder(columnOrder ?? uncontrolledColumnOrder, columns);\n const isControlled = columnOrder !== undefined;\n\n useEffect(() => {\n if (isControlled) {\n return;\n }\n\n setUncontrolledColumnOrder(previousColumnOrder => {\n const nextColumnOrder = reconcileColumnOrder(previousColumnOrder, columns);\n\n return JSON.stringify(previousColumnOrder) === JSON.stringify(nextColumnOrder)\n ? previousColumnOrder\n : nextColumnOrder;\n });\n }, [columns, isControlled]);\n\n const columnsByKey = new Map(columns.map(column => [column.key, column]));\n const orderedColumns = orderedColumnKeys.flatMap(columnKey => {\n const column = columnsByKey.get(columnKey);\n\n return column ? [column] : [];\n });\n const draggableColumnKeys = orderedColumns.filter(isColumnDraggable).map(column => column.key);\n\n const handleColumnDragEnd = (event: DragEndEvent) => {\n if (!enabled) {\n return;\n }\n\n const activeColumnKey = String(event.active.id);\n const overColumnKey = event.over ? String(event.over.id) : undefined;\n\n if (!overColumnKey || activeColumnKey === overColumnKey) {\n return;\n }\n\n const oldIndex = draggableColumnKeys.indexOf(activeColumnKey);\n const newIndex = draggableColumnKeys.indexOf(overColumnKey);\n\n if (oldIndex < 0 || newIndex < 0) {\n return;\n }\n\n const nextDraggableColumnKeys = arrayMove(draggableColumnKeys, oldIndex, newIndex);\n let nextDraggableColumnKeyIndex = 0;\n\n const nextOrderedColumnKeys = orderedColumns.map(column => {\n if (!isColumnDraggable(column)) {\n return column.key;\n }\n\n const nextColumnKey = nextDraggableColumnKeys[nextDraggableColumnKeyIndex];\n\n nextDraggableColumnKeyIndex += 1;\n\n return nextColumnKey ?? column.key;\n });\n\n if (!isControlled) {\n setUncontrolledColumnOrder(previousColumnOrder =>\n JSON.stringify(previousColumnOrder) === JSON.stringify(nextOrderedColumnKeys)\n ? previousColumnOrder\n : nextOrderedColumnKeys\n );\n }\n\n onColumnOrderChange?.(nextOrderedColumnKeys);\n };\n\n return {\n draggableColumnKeys,\n handleColumnDragEnd,\n orderedColumns,\n };\n};\n"],"names":["reconcileColumnOrder","previousColumnOrder","columns","nextColumnKeys","column","previousColumnKeySet","preservedColumnOrder","columnKey","missingColumnKeys","isColumnDraggable","useDraggableColumns","props","columnOrder","enabled","onColumnOrderChange","uncontrolledColumnOrder","setUncontrolledColumnOrder","useState","orderedColumnKeys","isControlled","useEffect","nextColumnOrder","columnsByKey","orderedColumns","draggableColumnKeys","event","activeColumnKey","overColumnKey","oldIndex","newIndex","nextDraggableColumnKeys","arrayMove","nextDraggableColumnKeyIndex","nextOrderedColumnKeys","nextColumnKey"],"mappings":";;AAaA,MAAMA,IAAuB,CACzBC,GACAC,MACC;AACD,QAAMC,IAAiBD,EAAQ,IAAI,CAAAE,MAAUA,EAAO,GAAG,GACjDC,IAAuB,IAAI,IAAIF,CAAc,GAC7CG,IAAuBL,EAAoB,OAAO,OAAaI,EAAqB,IAAIE,CAAS,CAAC,GAClGC,IAAoBL,EAAe,OAAO,CAAAI,MAAa,CAACD,EAAqB,SAASC,CAAS,CAAC;AAEtG,SAAO,CAAC,GAAGD,GAAsB,GAAGE,CAAiB;AACzD,GAEMC,IAAoB,CAA0CL,MAChEA,EAAO,cAAc,IAEZM,IAAsB,CAC/BC,MACC;AACD,QAAM,EAAE,SAAAT,GAAS,aAAAU,GAAa,SAAAC,GAAS,qBAAAC,MAAwBH,GACzD,CAACI,GAAyBC,CAA0B,IAAIC,EAAS,MAAMf,EAAQ,IAAI,CAAAE,MAAUA,EAAO,GAAG,CAAC,GACxGc,IAAoBlB,EAAqBY,KAAeG,GAAyBb,CAAO,GACxFiB,IAAeP,MAAgB;AAErC,EAAAQ,EAAU,MAAM;AACZ,IAAID,KAIJH,EAA2B,CAAAf,MAAuB;AAC9C,YAAMoB,IAAkBrB,EAAqBC,GAAqBC,CAAO;AAEzE,aAAO,KAAK,UAAUD,CAAmB,MAAM,KAAK,UAAUoB,CAAe,IACvEpB,IACAoB;AAAA,IACV,CAAC;AAAA,EACL,GAAG,CAACnB,GAASiB,CAAY,CAAC;AAE1B,QAAMG,IAAe,IAAI,IAAIpB,EAAQ,IAAI,CAAAE,MAAU,CAACA,EAAO,KAAKA,CAAM,CAAC,CAAC,GAClEmB,IAAiBL,EAAkB,QAAQ,CAAAX,MAAa;AAC1D,UAAMH,IAASkB,EAAa,IAAIf,CAAS;AAEzC,WAAOH,IAAS,CAACA,CAAM,IAAI,CAAA;AAAA,EAC/B,CAAC,GACKoB,IAAsBD,EAAe,OAAOd,CAAiB,EAAE,IAAI,CAAAL,MAAUA,EAAO,GAAG;AA+C7F,SAAO;AAAA,IACH,qBAAAoB;AAAA,IACA,qBA/CwB,CAACC,MAAwB;AACjD,UAAI,CAACZ;AACD;AAGJ,YAAMa,IAAkB,OAAOD,EAAM,OAAO,EAAE,GACxCE,IAAgBF,EAAM,OAAO,OAAOA,EAAM,KAAK,EAAE,IAAI;AAE3D,UAAI,CAACE,KAAiBD,MAAoBC;AACtC;AAGJ,YAAMC,IAAWJ,EAAoB,QAAQE,CAAe,GACtDG,IAAWL,EAAoB,QAAQG,CAAa;AAE1D,UAAIC,IAAW,KAAKC,IAAW;AAC3B;AAGJ,YAAMC,IAA0BC,EAAUP,GAAqBI,GAAUC,CAAQ;AACjF,UAAIG,IAA8B;AAElC,YAAMC,IAAwBV,EAAe,IAAI,CAAAnB,MAAU;AACvD,YAAI,CAACK,EAAkBL,CAAM;AACzB,iBAAOA,EAAO;AAGlB,cAAM8B,IAAgBJ,EAAwBE,CAA2B;AAEzE,eAAAA,KAA+B,GAExBE,KAAiB9B,EAAO;AAAA,MACnC,CAAC;AAED,MAAKe,KACDH;AAAA,QAA2B,CAAAf,MACvB,KAAK,UAAUA,CAAmB,MAAM,KAAK,UAAUgC,CAAqB,IACtEhC,IACAgC;AAAA,MAAA,GAIdnB,IAAsBmB,CAAqB;AAAA,IAC/C;AAAA,IAKI,gBAAAV;AAAA,EAAA;AAER;"}
@@ -0,0 +1,11 @@
1
+ import { UIEvent } from 'react';
2
+ export declare const TABLE_HORIZONTAL_SCROLL_EVENT = "table-horizontal-scroll";
3
+ type UseHorizontalSectionSyncProps = {
4
+ enabled: boolean;
5
+ };
6
+ export declare const useHorizontalSectionSync: ({ enabled }: UseHorizontalSectionSyncProps) => {
7
+ handleBodyScroll: (event: UIEvent<HTMLElement> | undefined) => void;
8
+ tableFooterRowRef: import('react').RefObject<HTMLDivElement>;
9
+ tableHeadRowRef: import('react').RefObject<HTMLDivElement>;
10
+ };
11
+ export {};
@@ -0,0 +1,39 @@
1
+ import { useRef as f, useCallback as u, useEffect as i } from "react";
2
+ const L = "table-horizontal-scroll", p = (t) => {
3
+ const r = t?.currentTarget;
4
+ if (r && "scrollLeft" in r)
5
+ return r.scrollLeft;
6
+ const o = t?.target;
7
+ return o && "scrollLeft" in o ? o.scrollLeft : 0;
8
+ }, y = ({ enabled: t }) => {
9
+ const r = f(null), o = f(null), s = f(0), e = u((c) => {
10
+ const n = (l) => {
11
+ if (l) {
12
+ if (c === 0) {
13
+ l.style.removeProperty("transform");
14
+ return;
15
+ }
16
+ l.style.transform = `translateX(-${c}px)`;
17
+ }
18
+ };
19
+ n(r.current), n(o.current);
20
+ }, []), a = u(
21
+ (c) => {
22
+ const n = p(c);
23
+ t && e(n), n !== s.current && (s.current = n, window.dispatchEvent(new CustomEvent(L)));
24
+ },
25
+ [t, e]
26
+ );
27
+ return i(() => {
28
+ t || (s.current = 0, e(0));
29
+ }, [t, e]), {
30
+ handleBodyScroll: a,
31
+ tableFooterRowRef: o,
32
+ tableHeadRowRef: r
33
+ };
34
+ };
35
+ export {
36
+ L as TABLE_HORIZONTAL_SCROLL_EVENT,
37
+ y as useHorizontalSectionSync
38
+ };
39
+ //# sourceMappingURL=useHorizontalSectionSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHorizontalSectionSync.js","sources":["../../../../src/components/table/layout/useHorizontalSectionSync.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, type UIEvent } from 'react';\n\nexport const TABLE_HORIZONTAL_SCROLL_EVENT = 'table-horizontal-scroll';\n\nconst getScrollLeftFromEvent = (event: UIEvent<HTMLElement> | undefined) => {\n const currentTarget = event?.currentTarget;\n\n if (currentTarget && 'scrollLeft' in currentTarget) {\n return (currentTarget as HTMLElement).scrollLeft;\n }\n\n const target = event?.target;\n\n if (target && 'scrollLeft' in target) {\n return (target as HTMLElement).scrollLeft;\n }\n\n return 0;\n};\n\ntype UseHorizontalSectionSyncProps = {\n enabled: boolean;\n};\n\nexport const useHorizontalSectionSync = ({ enabled }: UseHorizontalSectionSyncProps) => {\n const tableHeadRowRef = useRef<HTMLDivElement>(null);\n const tableFooterRowRef = useRef<HTMLDivElement>(null);\n const previousScrollLeftRef = useRef(0);\n\n const syncHorizontalSections = useCallback((scrollLeft: number) => {\n const applyTransform = (element: HTMLDivElement | null) => {\n if (!element) {\n return;\n }\n\n if (scrollLeft === 0) {\n element.style.removeProperty('transform');\n return;\n }\n\n element.style.transform = `translateX(-${scrollLeft}px)`;\n };\n\n applyTransform(tableHeadRowRef.current);\n applyTransform(tableFooterRowRef.current);\n }, []);\n\n const handleBodyScroll = useCallback(\n (event: UIEvent<HTMLElement> | undefined) => {\n const scrollLeft = getScrollLeftFromEvent(event);\n\n if (enabled) {\n syncHorizontalSections(scrollLeft);\n }\n\n if (scrollLeft !== previousScrollLeftRef.current) {\n previousScrollLeftRef.current = scrollLeft;\n window.dispatchEvent(new CustomEvent(TABLE_HORIZONTAL_SCROLL_EVENT));\n }\n },\n [enabled, syncHorizontalSections]\n );\n\n useEffect(() => {\n if (!enabled) {\n previousScrollLeftRef.current = 0;\n syncHorizontalSections(0);\n }\n }, [enabled, syncHorizontalSections]);\n\n return {\n handleBodyScroll,\n tableFooterRowRef,\n tableHeadRowRef,\n };\n};\n"],"names":["TABLE_HORIZONTAL_SCROLL_EVENT","getScrollLeftFromEvent","event","currentTarget","target","useHorizontalSectionSync","enabled","tableHeadRowRef","useRef","tableFooterRowRef","previousScrollLeftRef","syncHorizontalSections","useCallback","scrollLeft","applyTransform","element","handleBodyScroll","useEffect"],"mappings":";AAEO,MAAMA,IAAgC,2BAEvCC,IAAyB,CAACC,MAA4C;AACxE,QAAMC,IAAgBD,GAAO;AAE7B,MAAIC,KAAiB,gBAAgBA;AACjC,WAAQA,EAA8B;AAG1C,QAAMC,IAASF,GAAO;AAEtB,SAAIE,KAAU,gBAAgBA,IAClBA,EAAuB,aAG5B;AACX,GAMaC,IAA2B,CAAC,EAAE,SAAAC,QAA6C;AACpF,QAAMC,IAAkBC,EAAuB,IAAI,GAC7CC,IAAoBD,EAAuB,IAAI,GAC/CE,IAAwBF,EAAO,CAAC,GAEhCG,IAAyBC,EAAY,CAACC,MAAuB;AAC/D,UAAMC,IAAiB,CAACC,MAAmC;AACvD,UAAKA,GAIL;AAAA,YAAIF,MAAe,GAAG;AAClB,UAAAE,EAAQ,MAAM,eAAe,WAAW;AACxC;AAAA,QACJ;AAEA,QAAAA,EAAQ,MAAM,YAAY,eAAeF,CAAU;AAAA;AAAA,IACvD;AAEA,IAAAC,EAAeP,EAAgB,OAAO,GACtCO,EAAeL,EAAkB,OAAO;AAAA,EAC5C,GAAG,CAAA,CAAE,GAECO,IAAmBJ;AAAA,IACrB,CAACV,MAA4C;AACzC,YAAMW,IAAaZ,EAAuBC,CAAK;AAE/C,MAAII,KACAK,EAAuBE,CAAU,GAGjCA,MAAeH,EAAsB,YACrCA,EAAsB,UAAUG,GAChC,OAAO,cAAc,IAAI,YAAYb,CAA6B,CAAC;AAAA,IAE3E;AAAA,IACA,CAACM,GAASK,CAAsB;AAAA,EAAA;AAGpC,SAAAM,EAAU,MAAM;AACZ,IAAKX,MACDI,EAAsB,UAAU,GAChCC,EAAuB,CAAC;AAAA,EAEhC,GAAG,CAACL,GAASK,CAAsB,CAAC,GAE7B;AAAA,IACH,kBAAAK;AAAA,IACA,mBAAAP;AAAA,IACA,iBAAAF;AAAA,EAAA;AAER;"}
@@ -0,0 +1,12 @@
1
+ import { RefObject } from 'react';
2
+ import { TableColumnDefinition } from '../Table.types';
3
+ export declare const stabilizeMeasuredColumnMaxWidths: (previousMeasuredColumnMaxWidths: Record<string, string>, nextMeasuredColumnMaxWidths: Record<string, string>) => {
4
+ [k: string]: string;
5
+ };
6
+ type UseMeasuredColumnMaxWidthsProps<RowType extends Record<string, unknown>> = {
7
+ columns: TableColumnDefinition<RowType>[];
8
+ enabled: boolean;
9
+ tableWrapperRef: RefObject<HTMLDivElement | null>;
10
+ };
11
+ export declare const useMeasuredColumnMaxWidths: <RowType extends Record<string, unknown>>(props: UseMeasuredColumnMaxWidthsProps<RowType>) => Record<string, string>;
12
+ export {};
@@ -0,0 +1,85 @@
1
+ import { useState as S, useRef as p, useMemo as w, useLayoutEffect as R } from "react";
2
+ const A = 1, E = (t) => {
3
+ const e = t?.trim().match(/^(-?\d+(?:\.\d+)?)px$/);
4
+ return e ? Number(e[1]) : void 0;
5
+ }, x = (t) => {
6
+ const e = t.getBoundingClientRect().width;
7
+ return e > 0 ? Math.ceil(e) : t.scrollWidth;
8
+ }, O = (t) => {
9
+ if (!t)
10
+ return 0;
11
+ const e = window.getComputedStyle(t), n = Number.parseFloat(e.columnGap || e.gap || "0");
12
+ return Number.isFinite(n) ? Math.ceil(n) : 0;
13
+ }, q = (t) => {
14
+ const e = t.querySelector(".table-head-label");
15
+ if (e) {
16
+ const s = t.querySelector(".sort-arrows");
17
+ return x(e) + (s ? x(s) : 0) + (s ? O(t.querySelector(".table-head-button")) : 0);
18
+ }
19
+ return (t.querySelector(".table-cell-content, .table-head-button-label") ?? t).scrollWidth;
20
+ }, z = (t, e) => Object.fromEntries(
21
+ Object.entries(e).map(([n, s]) => {
22
+ const i = t[n], u = E(i), r = E(s);
23
+ return [
24
+ n,
25
+ u !== void 0 && r !== void 0 && Math.abs(u - r) <= A ? i : s
26
+ ];
27
+ })
28
+ ), P = (t) => {
29
+ const { columns: e, enabled: n, tableWrapperRef: s } = t, [i, u] = S({}), r = p(""), a = p({}), y = w(
30
+ () => e.map((o) => `${o.key}:${o.width === void 0 ? "auto" : String(o.width)}`).join("|"),
31
+ [e]
32
+ );
33
+ return R(() => {
34
+ const o = s.current;
35
+ if (!n || !o) {
36
+ r.current && (r.current = "", a.current = {}, u({}));
37
+ return;
38
+ }
39
+ if (e.length === 0) {
40
+ r.current && (r.current = "", a.current = {}, u({}));
41
+ return;
42
+ }
43
+ const h = e.filter((c) => c.width === void 0);
44
+ if (h.length === 0) {
45
+ r.current && (r.current = "", a.current = {}, u({}));
46
+ return;
47
+ }
48
+ const m = () => {
49
+ const c = Array.from(o.querySelectorAll("[data-column]")), C = Object.fromEntries(
50
+ h.flatMap((M) => {
51
+ const W = c.filter((d) => d.dataset.column === M.key).reduce(
52
+ (d, g) => Math.max(d, q(g)),
53
+ 0
54
+ );
55
+ return W > 0 ? [[M.key, `${Math.ceil(W)}px`]] : [];
56
+ })
57
+ ), l = z(
58
+ a.current,
59
+ C
60
+ ), f = JSON.stringify(l);
61
+ f !== r.current && (r.current = f, a.current = l, u(l));
62
+ };
63
+ m();
64
+ const v = [
65
+ o,
66
+ ...Array.from(
67
+ o.querySelectorAll(
68
+ ".table-head, .table-body, .table-footer, .table-scroll-content"
69
+ )
70
+ )
71
+ ], b = new ResizeObserver(() => {
72
+ m();
73
+ });
74
+ return v.forEach((c) => {
75
+ b.observe(c);
76
+ }), () => {
77
+ b.disconnect();
78
+ };
79
+ }, [y, n, s]), i;
80
+ };
81
+ export {
82
+ z as stabilizeMeasuredColumnMaxWidths,
83
+ P as useMeasuredColumnMaxWidths
84
+ };
85
+ //# sourceMappingURL=useMeasuredColumnMaxWidths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMeasuredColumnMaxWidths.js","sources":["../../../../src/components/table/layout/useMeasuredColumnMaxWidths.ts"],"sourcesContent":["import { useLayoutEffect, useMemo, useRef, useState, type RefObject } from 'react';\n\nimport type { TableColumnDefinition } from '../Table.types';\n\nconst MEASURED_WIDTH_JITTER_TOLERANCE_PX = 1;\n\nconst parsePixelWidth = (width?: string) => {\n const match = width?.trim().match(/^(-?\\d+(?:\\.\\d+)?)px$/);\n\n return match ? Number(match[1]) : undefined;\n};\n\nconst measureRenderedWidth = (element: HTMLElement) => {\n const renderedWidth = element.getBoundingClientRect().width;\n\n return renderedWidth > 0 ? Math.ceil(renderedWidth) : element.scrollWidth;\n};\n\nconst resolveFlexGapWidth = (element: HTMLElement | null) => {\n if (!element) {\n return 0;\n }\n\n const styles = window.getComputedStyle(element);\n const gap = Number.parseFloat(styles.columnGap || styles.gap || '0');\n\n return Number.isFinite(gap) ? Math.ceil(gap) : 0;\n};\n\nconst measureColumnContentWidth = (element: HTMLElement) => {\n const headerLabelElement = element.querySelector<HTMLElement>('.table-head-label');\n\n if (headerLabelElement) {\n const sortArrowsElement = element.querySelector<HTMLElement>('.sort-arrows');\n\n return (\n measureRenderedWidth(headerLabelElement) +\n (sortArrowsElement ? measureRenderedWidth(sortArrowsElement) : 0) +\n (sortArrowsElement ? resolveFlexGapWidth(element.querySelector<HTMLElement>('.table-head-button')) : 0)\n );\n }\n\n const contentElement =\n element.querySelector<HTMLElement>('.table-cell-content, .table-head-button-label') ?? element;\n\n return contentElement.scrollWidth;\n};\n\nexport const stabilizeMeasuredColumnMaxWidths = (\n previousMeasuredColumnMaxWidths: Record<string, string>,\n nextMeasuredColumnMaxWidths: Record<string, string>\n) =>\n Object.fromEntries(\n Object.entries(nextMeasuredColumnMaxWidths).map(([columnKey, nextMeasuredWidth]) => {\n const previousMeasuredWidth = previousMeasuredColumnMaxWidths[columnKey];\n const previousMeasuredWidthPx = parsePixelWidth(previousMeasuredWidth);\n const nextMeasuredWidthPx = parsePixelWidth(nextMeasuredWidth);\n\n return [\n columnKey,\n previousMeasuredWidthPx !== undefined &&\n nextMeasuredWidthPx !== undefined &&\n Math.abs(previousMeasuredWidthPx - nextMeasuredWidthPx) <= MEASURED_WIDTH_JITTER_TOLERANCE_PX\n ? previousMeasuredWidth\n : nextMeasuredWidth,\n ];\n })\n );\n\ntype UseMeasuredColumnMaxWidthsProps<RowType extends Record<string, unknown>> = {\n columns: TableColumnDefinition<RowType>[];\n enabled: boolean;\n tableWrapperRef: RefObject<HTMLDivElement | null>;\n};\n\nexport const useMeasuredColumnMaxWidths = <RowType extends Record<string, unknown>>(\n props: UseMeasuredColumnMaxWidthsProps<RowType>\n) => {\n const { columns, enabled, tableWrapperRef } = props;\n const [measuredColumnMaxWidths, setMeasuredColumnMaxWidths] = useState<Record<string, string>>({});\n const previousMeasuredWidthsRef = useRef('');\n const previousMeasuredColumnMaxWidthsRef = useRef<Record<string, string>>({});\n const columnsSignature = useMemo(\n () =>\n columns\n .map(column => `${column.key}:${column.width === undefined ? 'auto' : String(column.width)}`)\n .join('|'),\n [columns]\n );\n\n useLayoutEffect(() => {\n const wrapperElement = tableWrapperRef.current;\n\n if (!enabled || !wrapperElement) {\n if (previousMeasuredWidthsRef.current) {\n previousMeasuredWidthsRef.current = '';\n previousMeasuredColumnMaxWidthsRef.current = {};\n setMeasuredColumnMaxWidths({});\n }\n\n return;\n }\n\n if (columns.length === 0) {\n if (previousMeasuredWidthsRef.current) {\n previousMeasuredWidthsRef.current = '';\n previousMeasuredColumnMaxWidthsRef.current = {};\n setMeasuredColumnMaxWidths({});\n }\n\n return;\n }\n\n const columnsWithoutWidth = columns.filter(column => column.width === undefined);\n\n if (columnsWithoutWidth.length === 0) {\n if (previousMeasuredWidthsRef.current) {\n previousMeasuredWidthsRef.current = '';\n previousMeasuredColumnMaxWidthsRef.current = {};\n setMeasuredColumnMaxWidths({});\n }\n\n return;\n }\n\n const measureColumnMaxWidths = () => {\n const columnElements = Array.from(wrapperElement.querySelectorAll<HTMLElement>('[data-column]'));\n const nextMeasuredColumnMaxWidths = Object.fromEntries(\n columnsWithoutWidth.flatMap(column => {\n const matchingElements = columnElements.filter(element => element.dataset.column === column.key);\n const measuredWidth = matchingElements.reduce(\n (largestWidth, element) => Math.max(largestWidth, measureColumnContentWidth(element)),\n 0\n );\n\n return measuredWidth > 0 ? [[column.key, `${Math.ceil(measuredWidth)}px`]] : [];\n })\n );\n const stabilizedMeasuredColumnMaxWidths = stabilizeMeasuredColumnMaxWidths(\n previousMeasuredColumnMaxWidthsRef.current,\n nextMeasuredColumnMaxWidths\n );\n const serializedMeasuredWidths = JSON.stringify(stabilizedMeasuredColumnMaxWidths);\n\n if (serializedMeasuredWidths !== previousMeasuredWidthsRef.current) {\n previousMeasuredWidthsRef.current = serializedMeasuredWidths;\n previousMeasuredColumnMaxWidthsRef.current = stabilizedMeasuredColumnMaxWidths;\n setMeasuredColumnMaxWidths(stabilizedMeasuredColumnMaxWidths);\n }\n };\n\n measureColumnMaxWidths();\n\n const observedElements = [\n wrapperElement,\n ...Array.from(\n wrapperElement.querySelectorAll<HTMLElement>(\n '.table-head, .table-body, .table-footer, .table-scroll-content'\n )\n ),\n ];\n const resizeObserver = new ResizeObserver(() => {\n measureColumnMaxWidths();\n });\n\n observedElements.forEach(element => {\n resizeObserver.observe(element);\n });\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [columnsSignature, enabled, tableWrapperRef]);\n\n return measuredColumnMaxWidths;\n};\n"],"names":["MEASURED_WIDTH_JITTER_TOLERANCE_PX","parsePixelWidth","width","match","measureRenderedWidth","element","renderedWidth","resolveFlexGapWidth","styles","gap","measureColumnContentWidth","headerLabelElement","sortArrowsElement","stabilizeMeasuredColumnMaxWidths","previousMeasuredColumnMaxWidths","nextMeasuredColumnMaxWidths","columnKey","nextMeasuredWidth","previousMeasuredWidth","previousMeasuredWidthPx","nextMeasuredWidthPx","useMeasuredColumnMaxWidths","props","columns","enabled","tableWrapperRef","measuredColumnMaxWidths","setMeasuredColumnMaxWidths","useState","previousMeasuredWidthsRef","useRef","previousMeasuredColumnMaxWidthsRef","columnsSignature","useMemo","column","useLayoutEffect","wrapperElement","columnsWithoutWidth","measureColumnMaxWidths","columnElements","measuredWidth","largestWidth","stabilizedMeasuredColumnMaxWidths","serializedMeasuredWidths","observedElements","resizeObserver"],"mappings":";AAIA,MAAMA,IAAqC,GAErCC,IAAkB,CAACC,MAAmB;AACxC,QAAMC,IAAQD,GAAO,KAAA,EAAO,MAAM,uBAAuB;AAEzD,SAAOC,IAAQ,OAAOA,EAAM,CAAC,CAAC,IAAI;AACtC,GAEMC,IAAuB,CAACC,MAAyB;AACnD,QAAMC,IAAgBD,EAAQ,sBAAA,EAAwB;AAEtD,SAAOC,IAAgB,IAAI,KAAK,KAAKA,CAAa,IAAID,EAAQ;AAClE,GAEME,IAAsB,CAACF,MAAgC;AACzD,MAAI,CAACA;AACD,WAAO;AAGX,QAAMG,IAAS,OAAO,iBAAiBH,CAAO,GACxCI,IAAM,OAAO,WAAWD,EAAO,aAAaA,EAAO,OAAO,GAAG;AAEnE,SAAO,OAAO,SAASC,CAAG,IAAI,KAAK,KAAKA,CAAG,IAAI;AACnD,GAEMC,IAA4B,CAACL,MAAyB;AACxD,QAAMM,IAAqBN,EAAQ,cAA2B,mBAAmB;AAEjF,MAAIM,GAAoB;AACpB,UAAMC,IAAoBP,EAAQ,cAA2B,cAAc;AAE3E,WACID,EAAqBO,CAAkB,KACtCC,IAAoBR,EAAqBQ,CAAiB,IAAI,MAC9DA,IAAoBL,EAAoBF,EAAQ,cAA2B,oBAAoB,CAAC,IAAI;AAAA,EAE7G;AAKA,UAFIA,EAAQ,cAA2B,+CAA+C,KAAKA,GAErE;AAC1B,GAEaQ,IAAmC,CAC5CC,GACAC,MAEA,OAAO;AAAA,EACH,OAAO,QAAQA,CAA2B,EAAE,IAAI,CAAC,CAACC,GAAWC,CAAiB,MAAM;AAChF,UAAMC,IAAwBJ,EAAgCE,CAAS,GACjEG,IAA0BlB,EAAgBiB,CAAqB,GAC/DE,IAAsBnB,EAAgBgB,CAAiB;AAE7D,WAAO;AAAA,MACHD;AAAA,MACAG,MAA4B,UAC5BC,MAAwB,UACxB,KAAK,IAAID,IAA0BC,CAAmB,KAAKpB,IACrDkB,IACAD;AAAA,IAAA;AAAA,EAEd,CAAC;AACL,GAQSI,IAA6B,CACtCC,MACC;AACD,QAAM,EAAE,SAAAC,GAAS,SAAAC,GAAS,iBAAAC,EAAA,IAAoBH,GACxC,CAACI,GAAyBC,CAA0B,IAAIC,EAAiC,CAAA,CAAE,GAC3FC,IAA4BC,EAAO,EAAE,GACrCC,IAAqCD,EAA+B,EAAE,GACtEE,IAAmBC;AAAA,IACrB,MACIV,EACK,IAAI,OAAU,GAAGW,EAAO,GAAG,IAAIA,EAAO,UAAU,SAAY,SAAS,OAAOA,EAAO,KAAK,CAAC,EAAE,EAC3F,KAAK,GAAG;AAAA,IACjB,CAACX,CAAO;AAAA,EAAA;AAGZ,SAAAY,EAAgB,MAAM;AAClB,UAAMC,IAAiBX,EAAgB;AAEvC,QAAI,CAACD,KAAW,CAACY,GAAgB;AAC7B,MAAIP,EAA0B,YAC1BA,EAA0B,UAAU,IACpCE,EAAmC,UAAU,CAAA,GAC7CJ,EAA2B,CAAA,CAAE;AAGjC;AAAA,IACJ;AAEA,QAAIJ,EAAQ,WAAW,GAAG;AACtB,MAAIM,EAA0B,YAC1BA,EAA0B,UAAU,IACpCE,EAAmC,UAAU,CAAA,GAC7CJ,EAA2B,CAAA,CAAE;AAGjC;AAAA,IACJ;AAEA,UAAMU,IAAsBd,EAAQ,OAAO,CAAAW,MAAUA,EAAO,UAAU,MAAS;AAE/E,QAAIG,EAAoB,WAAW,GAAG;AAClC,MAAIR,EAA0B,YAC1BA,EAA0B,UAAU,IACpCE,EAAmC,UAAU,CAAA,GAC7CJ,EAA2B,CAAA,CAAE;AAGjC;AAAA,IACJ;AAEA,UAAMW,IAAyB,MAAM;AACjC,YAAMC,IAAiB,MAAM,KAAKH,EAAe,iBAA8B,eAAe,CAAC,GACzFrB,IAA8B,OAAO;AAAA,QACvCsB,EAAoB,QAAQ,CAAAH,MAAU;AAElC,gBAAMM,IADmBD,EAAe,OAAO,CAAAlC,MAAWA,EAAQ,QAAQ,WAAW6B,EAAO,GAAG,EACxD;AAAA,YACnC,CAACO,GAAcpC,MAAY,KAAK,IAAIoC,GAAc/B,EAA0BL,CAAO,CAAC;AAAA,YACpF;AAAA,UAAA;AAGJ,iBAAOmC,IAAgB,IAAI,CAAC,CAACN,EAAO,KAAK,GAAG,KAAK,KAAKM,CAAa,CAAC,IAAI,CAAC,IAAI,CAAA;AAAA,QACjF,CAAC;AAAA,MAAA,GAECE,IAAoC7B;AAAA,QACtCkB,EAAmC;AAAA,QACnChB;AAAA,MAAA,GAEE4B,IAA2B,KAAK,UAAUD,CAAiC;AAEjF,MAAIC,MAA6Bd,EAA0B,YACvDA,EAA0B,UAAUc,GACpCZ,EAAmC,UAAUW,GAC7Cf,EAA2Be,CAAiC;AAAA,IAEpE;AAEA,IAAAJ,EAAA;AAEA,UAAMM,IAAmB;AAAA,MACrBR;AAAA,MACA,GAAG,MAAM;AAAA,QACLA,EAAe;AAAA,UACX;AAAA,QAAA;AAAA,MACJ;AAAA,IACJ,GAEES,IAAiB,IAAI,eAAe,MAAM;AAC5C,MAAAP,EAAA;AAAA,IACJ,CAAC;AAED,WAAAM,EAAiB,QAAQ,CAAAvC,MAAW;AAChC,MAAAwC,EAAe,QAAQxC,CAAO;AAAA,IAClC,CAAC,GAEM,MAAM;AACT,MAAAwC,EAAe,WAAA;AAAA,IACnB;AAAA,EACJ,GAAG,CAACb,GAAkBR,GAASC,CAAe,CAAC,GAExCC;AACX;"}
@@ -0,0 +1,14 @@
1
+ import { PointerEvent as ReactPointerEvent } from 'react';
2
+ import { TableColumnDefinition } from '../Table.types';
3
+ type UseResizableColumnsProps<RowType extends Record<string, unknown>> = {
4
+ columns: TableColumnDefinition<RowType>[];
5
+ enabled: boolean;
6
+ onColumnResize?: (columnKey: string, width?: number) => void;
7
+ };
8
+ export declare const useResizableColumns: <RowType extends Record<string, unknown>>(props: UseResizableColumnsProps<RowType>) => {
9
+ handleColumnResizeReset: (columnKey: string) => void;
10
+ handleColumnResizeStart: (columnKey: string, event: ReactPointerEvent<HTMLDivElement>) => void;
11
+ lastResizableColumnKey: string | Extract<keyof RowType, string> | undefined;
12
+ resizedColumns: TableColumnDefinition<RowType>[];
13
+ };
14
+ export {};
@@ -0,0 +1,91 @@
1
+ import { useState as z, useEffect as f } from "react";
2
+ import { DEFAULT_MIN_RESIZE_WIDTH_PX as W, MIN_COLUMN_WIDTH_PX as R, DEFAULT_MAX_RESIZE_WIDTH_PX as p } from "../tableSizing.constants.js";
3
+ const w = (c) => {
4
+ const l = (typeof c == "number" ? `${c}px` : c)?.trim().match(/^(-?\d+(?:\.\d+)?)px$/);
5
+ if (l)
6
+ return Math.round(Number(l[1]));
7
+ }, S = (c) => {
8
+ const { columns: s, enabled: l, onColumnResize: a } = c, [y, u] = z({}), [r, h] = z(void 0);
9
+ f(() => {
10
+ a && u((e) => {
11
+ const n = Object.fromEntries(
12
+ Object.entries(e).flatMap(([o]) => {
13
+ const t = s.find((d) => d.key === o), i = w(t?.width);
14
+ return i === void 0 ? [] : [[o, i]];
15
+ })
16
+ );
17
+ return JSON.stringify(e) === JSON.stringify(n) ? e : n;
18
+ });
19
+ }, [s, a]), f(() => {
20
+ if (!r)
21
+ return;
22
+ const e = document.body.style.cursor, n = document.body.style.userSelect;
23
+ document.body.style.cursor = "col-resize", document.body.style.userSelect = "none";
24
+ const o = (i) => {
25
+ const d = Math.min(
26
+ r.maxResizeWidth,
27
+ Math.max(
28
+ r.minResizeWidth,
29
+ Math.round(r.startWidth + i.clientX - r.startX)
30
+ )
31
+ );
32
+ a?.(r.columnKey, d), u(
33
+ (m) => m[r.columnKey] === d ? m : {
34
+ ...m,
35
+ [r.columnKey]: d
36
+ }
37
+ );
38
+ }, t = () => {
39
+ h(void 0);
40
+ };
41
+ return window.addEventListener("pointermove", o), window.addEventListener("pointerup", t), window.addEventListener("pointercancel", t), () => {
42
+ document.body.style.cursor = e, document.body.style.userSelect = n, window.removeEventListener("pointermove", o), window.removeEventListener("pointerup", t), window.removeEventListener("pointercancel", t);
43
+ };
44
+ }, [a, r]);
45
+ const b = (e, n) => {
46
+ if (!l || n.button !== 0)
47
+ return;
48
+ const o = s.find((m) => m.key === e), t = n.currentTarget.closest(".table-head-cell");
49
+ if (!o || !t)
50
+ return;
51
+ n.preventDefault(), n.stopPropagation();
52
+ const i = Math.max(o.minResizeWidth ?? W, R), d = Math.max(o.maxResizeWidth ?? p, i);
53
+ h({
54
+ columnKey: e,
55
+ maxResizeWidth: d,
56
+ minResizeWidth: i,
57
+ startWidth: t.getBoundingClientRect().width,
58
+ startX: n.clientX
59
+ });
60
+ }, x = (e) => {
61
+ const n = s.find((t) => t.key === e), o = n?.minResizeWidth !== void 0 ? Math.max(n.minResizeWidth, R) : void 0;
62
+ h(void 0), a?.(e, o), u((t) => {
63
+ if (o === void 0) {
64
+ if (!(e in t))
65
+ return t;
66
+ const i = { ...t };
67
+ return delete i[e], i;
68
+ }
69
+ return t[e] === o ? t : {
70
+ ...t,
71
+ [e]: o
72
+ };
73
+ });
74
+ }, E = s.map((e) => {
75
+ const n = y[e.key];
76
+ return n === void 0 ? e : {
77
+ ...e,
78
+ width: n
79
+ };
80
+ });
81
+ return {
82
+ handleColumnResizeReset: x,
83
+ handleColumnResizeStart: b,
84
+ lastResizableColumnKey: s.at(-1)?.key,
85
+ resizedColumns: E
86
+ };
87
+ };
88
+ export {
89
+ S as useResizableColumns
90
+ };
91
+ //# sourceMappingURL=useResizableColumns.js.map