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

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 (294) hide show
  1. package/DayPicker.js +6 -2
  2. package/DayPicker.js.map +1 -1
  3. package/DayPickerCalendar.d.ts +2 -0
  4. package/DayPickerCalendar.js +5 -0
  5. package/DayPickerCalendar.js.map +1 -0
  6. package/DayPickerPrototype.d.ts +2 -0
  7. package/DayPickerPrototype.js +5 -0
  8. package/DayPickerPrototype.js.map +1 -0
  9. package/TableNext.d.ts +2 -0
  10. package/TableNext.js +23 -0
  11. package/TableNext.js.map +1 -0
  12. package/TableToolbar.js +3 -2
  13. package/TableToolbar.js.map +1 -1
  14. package/components/assetTree/Tree.js +13 -13
  15. package/components/charts/Area.d.ts +5 -3
  16. package/components/charts/Area.js +4 -3
  17. package/components/charts/Area.js.map +1 -1
  18. package/components/charts/AreaChart.js.map +1 -1
  19. package/components/charts/ComposedChart.js.map +1 -1
  20. package/components/clearableInput/ClearableInput.d.ts +30 -0
  21. package/components/clearableInput/ClearableInput.js +81 -78
  22. package/components/clearableInput/ClearableInput.js.map +1 -1
  23. package/components/datepicker/DayPicker.d.ts +4 -51
  24. package/components/datepicker/DayPicker.js +264 -256
  25. package/components/datepicker/DayPicker.js.map +1 -1
  26. package/components/datepicker/DayPickerCalendar.d.ts +4 -0
  27. package/components/datepicker/DayPickerCalendar.js +129 -0
  28. package/components/datepicker/DayPickerCalendar.js.map +1 -0
  29. package/components/datepicker/DayPickerDropdown.d.ts +18 -0
  30. package/components/datepicker/DayPickerDropdown.js +75 -0
  31. package/components/datepicker/DayPickerDropdown.js.map +1 -0
  32. package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
  33. package/components/datepicker/DayPickerDropdownFooter.js +7 -0
  34. package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
  35. package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
  36. package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
  37. package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
  38. package/components/datepicker/DayPickerInput.d.ts +28 -0
  39. package/components/datepicker/DayPickerInput.js +65 -0
  40. package/components/datepicker/DayPickerInput.js.map +1 -0
  41. package/components/datepicker/DayPickerPrototype.d.ts +53 -0
  42. package/components/datepicker/DayPickerPrototype.js +285 -0
  43. package/components/datepicker/DayPickerPrototype.js.map +1 -0
  44. package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
  45. package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
  46. package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
  47. package/components/datepicker/dayPickerTypes.d.ts +517 -0
  48. package/components/datepicker/dayPickerTypes.js +7 -0
  49. package/components/datepicker/dayPickerTypes.js.map +1 -0
  50. package/components/datepicker/dayPickerUtils.d.ts +10 -0
  51. package/components/datepicker/dayPickerUtils.js +92 -0
  52. package/components/datepicker/dayPickerUtils.js.map +1 -0
  53. package/components/datepicker/useDayPickerInputState.d.ts +32 -0
  54. package/components/datepicker/useDayPickerInputState.js +85 -0
  55. package/components/datepicker/useDayPickerInputState.js.map +1 -0
  56. package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
  57. package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
  58. package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
  59. package/components/divider/Divider.js +6 -6
  60. package/components/dropdown/ButtonDropdown.d.ts +4 -0
  61. package/components/dropdown/ButtonDropdown.js +70 -68
  62. package/components/dropdown/ButtonDropdown.js.map +1 -1
  63. package/components/dropdown/DropdownToggleButton.d.ts +1 -0
  64. package/components/dropdown/DropdownToggleButton.js +17 -15
  65. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  66. package/components/fade/FadeExpander.js +17 -20
  67. package/components/fade/FadeExpander.js.map +1 -1
  68. package/components/loadMore/LoadMoreProgress.js +6 -7
  69. package/components/map/components/Map.js +3 -3
  70. package/components/map/utils/rendering.js +5 -5
  71. package/components/popover/Popover.js +4 -4
  72. package/components/radiobutton/RadioCardGroup.js +3 -3
  73. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  74. package/components/selects/Multiselect.d.ts +6 -0
  75. package/components/selects/Multiselect.js +164 -150
  76. package/components/selects/Multiselect.js.map +1 -1
  77. package/components/selects/Select.js +39 -37
  78. package/components/selects/Select.js.map +1 -1
  79. package/components/table/Table.d.ts +27 -248
  80. package/components/table/Table.js +237 -214
  81. package/components/table/Table.js.map +1 -1
  82. package/components/table/Table.types.d.ts +293 -121
  83. package/components/table/TableBody.d.ts +65 -5
  84. package/components/table/TableBody.js +132 -2
  85. package/components/table/TableBody.js.map +1 -1
  86. package/components/table/TableCardsSorting.js +25 -32
  87. package/components/table/TableCardsSorting.js.map +1 -1
  88. package/components/table/TableColumn.d.ts +13 -5
  89. package/components/table/TableColumn.js +112 -2
  90. package/components/table/TableColumn.js.map +1 -1
  91. package/components/table/TableExpandedContentRow.d.ts +7 -7
  92. package/components/table/TableExpandedContentRow.js +107 -2
  93. package/components/table/TableExpandedContentRow.js.map +1 -1
  94. package/components/table/TableExpandedRow.d.ts +9 -4
  95. package/components/table/TableExpandedRow.js +147 -2
  96. package/components/table/TableExpandedRow.js.map +1 -1
  97. package/components/table/TableExpanderButton.js +13 -11
  98. package/components/table/TableExpanderButton.js.map +1 -1
  99. package/components/table/TableFooter.d.ts +10 -6
  100. package/components/table/TableFooter.js +49 -2
  101. package/components/table/TableFooter.js.map +1 -1
  102. package/components/table/TableGroupFooterRow.d.ts +7 -7
  103. package/components/table/TableGroupFooterRow.js +27 -2
  104. package/components/table/TableGroupFooterRow.js.map +1 -1
  105. package/components/table/TableGroupRow.d.ts +7 -7
  106. package/components/table/TableGroupRow.js +33 -2
  107. package/components/table/TableGroupRow.js.map +1 -1
  108. package/components/table/TableHeader.d.ts +9 -4
  109. package/components/table/TableHeader.js +104 -2
  110. package/components/table/TableHeader.js.map +1 -1
  111. package/components/table/TableHeaderColumn.d.ts +14 -8
  112. package/components/table/TableHeaderColumn.js +78 -2
  113. package/components/table/TableHeaderColumn.js.map +1 -1
  114. package/components/table/TableHeaderRow.d.ts +1 -1
  115. package/components/table/TableHeaderRow.js +11 -2
  116. package/components/table/TableHeaderRow.js.map +1 -1
  117. package/components/table/TableRow.d.ts +9 -4
  118. package/components/table/TableRow.js +108 -2
  119. package/components/table/TableRow.js.map +1 -1
  120. package/components/table/TableSpacerRow.d.ts +3 -2
  121. package/components/table/TableSpacerRow.js +26 -2
  122. package/components/table/TableSpacerRow.js.map +1 -1
  123. package/components/table/TableToolbar.d.ts +4 -23
  124. package/components/table/TableToolbar.js +39 -28
  125. package/components/table/TableToolbar.js.map +1 -1
  126. package/components/table/TableToolbarColumn.d.ts +31 -0
  127. package/components/table/TableToolbarColumn.js +33 -0
  128. package/components/table/TableToolbarColumn.js.map +1 -0
  129. package/components/table/TableViewToggles.d.ts +3 -3
  130. package/components/table/TableViewToggles.js.map +1 -1
  131. package/components/table/context/TableInteractionContext.d.ts +26 -0
  132. package/components/table/context/TableInteractionContext.js +7 -0
  133. package/components/table/context/TableInteractionContext.js.map +1 -0
  134. package/components/table/context/TableLayoutContext.d.ts +25 -0
  135. package/components/table/context/TableLayoutContext.js +7 -0
  136. package/components/table/context/TableLayoutContext.js.map +1 -0
  137. package/components/table/context/TableRenderConfigContext.d.ts +27 -0
  138. package/components/table/context/TableRenderConfigContext.js +7 -0
  139. package/components/table/context/TableRenderConfigContext.js.map +1 -0
  140. package/components/table/context/TableRenderContext.d.ts +85 -0
  141. package/components/table/context/TableRenderContext.js +7 -0
  142. package/components/table/context/TableRenderContext.js.map +1 -0
  143. package/components/table/context/TableStructureContext.d.ts +31 -0
  144. package/components/table/context/TableStructureContext.js +17 -0
  145. package/components/table/context/TableStructureContext.js.map +1 -0
  146. package/components/table/layout/columnSizing.d.ts +2 -2
  147. package/components/table/layout/columnSizing.js.map +1 -1
  148. package/components/table/layout/useDraggableColumns.d.ts +3 -3
  149. package/components/table/layout/useDraggableColumns.js +17 -17
  150. package/components/table/layout/useDraggableColumns.js.map +1 -1
  151. package/components/table/layout/useHorizontalSectionSync.d.ts +3 -1
  152. package/components/table/layout/useHorizontalSectionSync.js +32 -28
  153. package/components/table/layout/useHorizontalSectionSync.js.map +1 -1
  154. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +3 -3
  155. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -1
  156. package/components/table/layout/useResizableColumns.d.ts +5 -4
  157. package/components/table/layout/useResizableColumns.js +108 -67
  158. package/components/table/layout/useResizableColumns.js.map +1 -1
  159. package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
  160. package/components/table/layout/useTableBodyScrollBottom.js +37 -0
  161. package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
  162. package/components/table/layout/useTableLayout.d.ts +17 -6
  163. package/components/table/layout/useTableLayout.js +41 -38
  164. package/components/table/layout/useTableLayout.js.map +1 -1
  165. package/components/table/layout/useTableVirtualization.d.ts +6 -6
  166. package/components/table/layout/useTableVirtualization.js +22 -22
  167. package/components/table/layout/useTableVirtualization.js.map +1 -1
  168. package/components/table/model/resolveRowMeta.d.ts +3 -2
  169. package/components/table/model/resolveRowMeta.js.map +1 -1
  170. package/components/table/model/resolveTableClassConfig.d.ts +2 -3
  171. package/components/table/model/resolveTableClassConfig.js.map +1 -1
  172. package/components/table/model/tableView.types.d.ts +41 -0
  173. package/components/table/native/TableSettingsListItem.js +1 -1
  174. package/components/table/native/TableSettingsListItem.js.map +1 -1
  175. package/components/table/render/body/TableBodyContent.d.ts +21 -0
  176. package/components/table/render/body/TableBodyContent.js +52 -0
  177. package/components/table/render/body/TableBodyContent.js.map +1 -0
  178. package/components/table/render/body/TableEmptyRow.js +2 -2
  179. package/components/table/render/body/TableEmptyRow.js.map +1 -1
  180. package/components/table/render/header/TableBatchDropdown.d.ts +5 -1
  181. package/components/table/render/header/TableBatchDropdown.js +17 -15
  182. package/components/table/render/header/TableBatchDropdown.js.map +1 -1
  183. package/components/table/render/header/TableColumnFilter.d.ts +2 -2
  184. package/components/table/render/header/TableColumnFilter.js +16 -14
  185. package/components/table/render/header/TableColumnFilter.js.map +1 -1
  186. package/components/table/render/header/TableDraggableHeaderCell.d.ts +2 -1
  187. package/components/table/render/header/TableDraggableHeaderCell.js +44 -34
  188. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -1
  189. package/components/table/render/header/TableHeader.types.d.ts +11 -9
  190. package/components/table/render/header/TableHeaderCellContent.d.ts +2 -1
  191. package/components/table/render/header/TableHeaderCellContent.js.map +1 -1
  192. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +2 -1
  193. package/components/table/render/header/TableHeaderCellResizeHandle.js +8 -8
  194. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -1
  195. package/components/table/render/header/TableHeaderDragOverlay.d.ts +5 -4
  196. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -1
  197. package/components/table/render/header/TableStaticHeaderCell.d.ts +2 -1
  198. package/components/table/render/header/TableStaticHeaderCell.js +34 -22
  199. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -1
  200. package/components/table/render/header/resolveAriaSort.d.ts +2 -1
  201. package/components/table/render/header/resolveAriaSort.js.map +1 -1
  202. package/components/table/render/header/resolveHeaderCellClassName.d.ts +4 -2
  203. package/components/table/render/header/resolveHeaderCellClassName.js +11 -10
  204. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -1
  205. package/components/table/render/header/resolveHeaderCellStyle.d.ts +2 -1
  206. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -1
  207. package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
  208. package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
  209. package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
  210. package/components/table/runtime/useRenderDraftState.d.ts +14 -0
  211. package/components/table/runtime/useRenderDraftState.js +80 -0
  212. package/components/table/runtime/useRenderDraftState.js.map +1 -0
  213. package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
  214. package/components/table/runtime/useResolvedRenderColumns.js +113 -0
  215. package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
  216. package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
  217. package/components/table/runtime/useResolvedRenderHeader.js +67 -0
  218. package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
  219. package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
  220. package/components/table/selection/useInternalTableSelectionState.js +28 -0
  221. package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
  222. package/components/table/selection/useTableSelection.d.ts +3 -3
  223. package/components/table/selection/useTableSelection.js.map +1 -1
  224. package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
  225. package/components/table/shared/getCellContentOverflowClassName.js +18 -0
  226. package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
  227. package/components/table/shared/getInteractiveRowProps.d.ts +3 -2
  228. package/components/table/shared/getInteractiveRowProps.js.map +1 -1
  229. package/hooks/useUrlState.js +3 -3
  230. package/package.json +16 -17
  231. package/utils/analytics/createAnalyticsOverlayTooltip.js +57 -57
  232. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -1
  233. package/utils/analytics/useAnalyticsOverlayDom.js +3 -3
  234. package/utils/routeUtils.d.ts +5 -2
  235. package/utils/routeUtils.js +17 -17
  236. package/utils/routeUtils.js.map +1 -1
  237. package/version.d.ts +1 -1
  238. package/version.js +1 -1
  239. package/version.js.map +1 -1
  240. package/components/table/TableCard.d.ts +0 -63
  241. package/components/table/TableCard.js +0 -150
  242. package/components/table/TableCard.js.map +0 -1
  243. package/components/table/model/buildTableViewModel.d.ts +0 -28
  244. package/components/table/model/buildTableViewModel.js +0 -221
  245. package/components/table/model/buildTableViewModel.js.map +0 -1
  246. package/components/table/model/resolveCellContent.d.ts +0 -2
  247. package/components/table/model/resolveCellContent.js +0 -5
  248. package/components/table/model/resolveCellContent.js.map +0 -1
  249. package/components/table/model/tableViewModel.types.d.ts +0 -153
  250. package/components/table/parse/parseBody.d.ts +0 -3
  251. package/components/table/parse/parseBody.js +0 -13
  252. package/components/table/parse/parseBody.js.map +0 -1
  253. package/components/table/parse/parseColumns.d.ts +0 -3
  254. package/components/table/parse/parseColumns.js +0 -81
  255. package/components/table/parse/parseColumns.js.map +0 -1
  256. package/components/table/parse/parseFooter.d.ts +0 -3
  257. package/components/table/parse/parseFooter.js +0 -39
  258. package/components/table/parse/parseFooter.js.map +0 -1
  259. package/components/table/parse/parseHeaders.d.ts +0 -4
  260. package/components/table/parse/parseHeaders.js +0 -89
  261. package/components/table/parse/parseHeaders.js.map +0 -1
  262. package/components/table/parse/parseRows.d.ts +0 -3
  263. package/components/table/parse/parseRows.js +0 -93
  264. package/components/table/parse/parseRows.js.map +0 -1
  265. package/components/table/parse/tableChildGuards.d.ts +0 -25
  266. package/components/table/parse/tableChildGuards.js +0 -29
  267. package/components/table/parse/tableChildGuards.js.map +0 -1
  268. package/components/table/render/body/TableBodyRow.d.ts +0 -16
  269. package/components/table/render/body/TableBodyRow.js +0 -84
  270. package/components/table/render/body/TableBodyRow.js.map +0 -1
  271. package/components/table/render/body/TableBodySection.d.ts +0 -20
  272. package/components/table/render/body/TableBodySection.js +0 -68
  273. package/components/table/render/body/TableBodySection.js.map +0 -1
  274. package/components/table/render/body/TableDataRow.d.ts +0 -15
  275. package/components/table/render/body/TableDataRow.js +0 -143
  276. package/components/table/render/body/TableDataRow.js.map +0 -1
  277. package/components/table/render/body/TableExpandedRow.d.ts +0 -8
  278. package/components/table/render/body/TableExpandedRow.js +0 -84
  279. package/components/table/render/body/TableExpandedRow.js.map +0 -1
  280. package/components/table/render/body/TableGroupRow.d.ts +0 -8
  281. package/components/table/render/body/TableGroupRow.js +0 -21
  282. package/components/table/render/body/TableGroupRow.js.map +0 -1
  283. package/components/table/render/body/TableSpacerRow.d.ts +0 -7
  284. package/components/table/render/body/TableSpacerRow.js +0 -15
  285. package/components/table/render/body/TableSpacerRow.js.map +0 -1
  286. package/components/table/render/footer/TableFooterCell.d.ts +0 -8
  287. package/components/table/render/footer/TableFooterCell.js +0 -31
  288. package/components/table/render/footer/TableFooterCell.js.map +0 -1
  289. package/components/table/render/footer/TableFooterSection.d.ts +0 -10
  290. package/components/table/render/footer/TableFooterSection.js +0 -28
  291. package/components/table/render/footer/TableFooterSection.js.map +0 -1
  292. package/components/table/render/header/TableHeaderSection.d.ts +0 -3
  293. package/components/table/render/header/TableHeaderSection.js +0 -104
  294. package/components/table/render/header/TableHeaderSection.js.map +0 -1
@@ -1,24 +1,24 @@
1
- import { get as d } from "es-toolkit/compat";
2
- import { isNil as l } from "es-toolkit";
1
+ import { get as m } from "es-toolkit/compat";
2
+ import { isNil as d } from "es-toolkit";
3
3
  import { isEqual as A } from "es-toolkit";
4
- import { SortDirection as y } from "./SortUtils.js";
5
- const g = (t) => t === y.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.sortDir)}${t.sortBy}` : null, D = (t) => t ? t.startsWith("-") ? {
4
+ import { SortDirection as l } from "./SortUtils.js";
5
+ const g = (t) => t === l.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.sortDir)}${t.sortBy}` : null, D = (t) => t ? t.startsWith("-") ? {
6
6
  sortBy: t.substring(1),
7
7
  // remove '-'
8
- sortDir: "DESCENDING"
8
+ sortDir: l.DESCENDING
9
9
  } : t.startsWith("+") ? {
10
10
  sortBy: t.substring(1).trim(),
11
11
  // remove '+' and potential space
12
- sortDir: "ASCENDING"
12
+ sortDir: l.ASCENDING
13
13
  } : {
14
14
  sortBy: t.trim(),
15
- sortDir: "ASCENDING"
15
+ sortDir: l.ASCENDING
16
16
  } : null, w = ({
17
17
  columnOrder: t = [],
18
18
  hiddenColumns: e = [],
19
19
  columnsDetails: s = {}
20
20
  }) => t.map((r) => {
21
- const i = d(s[r], "width"), o = d(s[r], "defaultWidth"), c = i !== 0 && i !== o ? `:${i}` : "";
21
+ const i = m(s[r], "width"), o = m(s[r], "defaultWidth"), c = i !== 0 && i !== o ? `:${i}` : "";
22
22
  return `${e.includes(r) ? "-" : ""}${r}${c}`;
23
23
  }), W = (t, e) => {
24
24
  const s = {
@@ -38,10 +38,10 @@ const g = (t) => t === y.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.so
38
38
  }, E = (t, e = []) => {
39
39
  const s = new Map(e.map((n) => [n.key, n]));
40
40
  return t.map((n) => {
41
- const r = s.get(n.key), i = !l(n.width) && n.width !== r?.width ? `:${n.width}` : "";
41
+ const r = s.get(n.key), i = !d(n.width) && n.width !== r?.width ? `:${n.width}` : "";
42
42
  return `${n.visible === !1 ? "-" : ""}${n.key}${i}`;
43
43
  });
44
- }, h = (t, e) => l(t) || t === "" ? e : /^-?\d+(\.\d+)?$/.test(t) ? Number(t) : t, j = (t, e) => {
44
+ }, h = (t, e) => d(t) || t === "" ? e : /^-?\d+(\.\d+)?$/.test(t) ? Number(t) : t, j = (t, e) => {
45
45
  const s = new Map(e.map((i) => [i.key, i])), n = /* @__PURE__ */ new Set(), r = [];
46
46
  return t.forEach((i) => {
47
47
  const [o, c] = i.split(":"), u = o.startsWith("-") ? o.substring(1) : o, a = s.get(u);
@@ -51,18 +51,18 @@ const g = (t) => t === y.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.so
51
51
  width: h(c, a.width)
52
52
  }));
53
53
  }), [...r, ...e.filter((i) => !n.has(i.key))];
54
- }, m = (t) => encodeURIComponent(String(t)), p = (t) => decodeURIComponent(t), B = (t, e) => {
54
+ }, p = (t) => encodeURIComponent(String(t)), f = (t) => decodeURIComponent(t), B = (t, e) => {
55
55
  const s = new Map(e.map((r) => [r.key, r])), n = [];
56
56
  return t.forEach((r, i) => {
57
57
  const o = s.get(i), c = encodeURIComponent(i), u = encodeURIComponent(r);
58
58
  if (o && ["array", "array-number", "object"].includes(o.type ?? "string")) {
59
- const f = u.replace(/%2C/g, ",").replace(/%3A/g, ":");
60
- n.push(`${c}=${f}`);
59
+ const y = u.replace(/%2C/g, ",").replace(/%3A/g, ":");
60
+ n.push(`${c}=${y}`);
61
61
  } else
62
62
  n.push(`${c}=${u}`);
63
63
  }), n.join("&");
64
64
  }, k = (t, e) => {
65
- if (l(t) || t === "")
65
+ if (d(t) || t === "")
66
66
  return null;
67
67
  switch (e) {
68
68
  case "string":
@@ -74,7 +74,7 @@ const g = (t) => t === y.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.so
74
74
  case "array-number":
75
75
  return !Array.isArray(t) || t.length === 0 ? null : t.map(String).join(",");
76
76
  case "object":
77
- return typeof t != "object" || Object.keys(t).length === 0 ? null : Object.entries(t).map(([s, n]) => `${m(s)}:${m(String(n))}`).join(",");
77
+ return typeof t != "object" || Object.keys(t).length === 0 ? null : Object.entries(t).map(([s, n]) => `${p(s)}:${p(String(n))}`).join(",");
78
78
  default:
79
79
  return String(t);
80
80
  }
@@ -94,10 +94,10 @@ const g = (t) => t === y.DESCENDING ? "-" : "", $ = (t) => t?.sortBy ? `${g(t.so
94
94
  const e = {};
95
95
  return t.split(",").forEach((s) => {
96
96
  const [n, r] = s.split(":");
97
- n && r && (e[p(n)] = p(r));
97
+ n && r && (e[f(n)] = f(r));
98
98
  }), e;
99
99
  }
100
- }, z = (t, e) => l(t) ? null : C[e](t);
100
+ }, z = (t, e) => d(t) ? null : C[e](t);
101
101
  export {
102
102
  j as deserializeColumnsConfig,
103
103
  z as deserializeValue,
@@ -1 +1 @@
1
- {"version":3,"file":"routeUtils.js","sources":["../../src/utils/routeUtils.ts"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { isEqual, isNil } from 'es-toolkit';\n\nimport { SortDirection, type SortDirectionType } from './SortUtils';\nimport type { TableColumnDetailsMap, TableColumnsSettings } from '../components/table/native/TableSettingsDialog';\n\n// Re-export isEqual for use in the Consumer's useSelector\nexport { isEqual };\n\n// Moved type definition to TableSettingsDialog but reexported here for backwards compatibility\n// TODO: remove this re-export for next major release 3.0\nexport type ColumnsSettings = TableColumnsSettings;\n\nexport type TableColumnConfigItem = {\n key: string;\n visible?: boolean;\n width?: number | string;\n};\n\n/**\n * Returns a compact sort direction prefix for use in URL params.\n * Serialize: Ascending = \"\", Descending = \"-\"\n *\n * Useful for concise sort state like `sort=-name` or `sort=name`.\n *\n * @example\n * getSortDirShort(SortDirection.DESCENDING) // '-'\n */\nexport const getSortDirShort = (sortDir: string) => (sortDir === SortDirection.DESCENDING ? '-' : '');\n\n/**\n * Returns a serialized string of the sort order and sort direction.\n *\n * @param sortInfo { sortDir: SortDirectionType; sortBy: string }\n * @returns\n */\nexport const serializeSorting = (sortInfo: { sortDir: SortDirectionType; sortBy: string }) => {\n if (!sortInfo?.sortBy) {\n return null;\n }\n return `${getSortDirShort(sortInfo.sortDir)}${sortInfo.sortBy}`;\n};\n\n/**\n * Parses a compact sort param (e.g. `name` or `-name`) into sort fields.\n * Useful when reading URL params into table state.\n *\n * @example\n * parseSorting('-createdAt') // { sortBy: 'createdAt', sortDir: 'DESCENDING' }\n */\nexport const parseSorting = (sortValueShort: string | null | undefined) => {\n if (!sortValueShort) {\n return null;\n }\n\n // Check for descending prefix\n if (sortValueShort.startsWith('-')) {\n return {\n sortBy: sortValueShort.substring(1), // remove '-'\n sortDir: 'DESCENDING',\n };\n }\n\n // Check for legacy ascending prefix (optional, for backward compat)\n // There was even a bug in qs 6.7.0 where the '+' sorting will be parsed as a\n // space by qs even though decoding is disabled\n // therefore, we need to trim the value\n if (sortValueShort.startsWith('+')) {\n return {\n sortBy: sortValueShort.substring(1).trim(), // remove '+' and potential space\n sortDir: 'ASCENDING',\n };\n }\n\n // Default: No prefix = Ascending\n return {\n sortBy: sortValueShort.trim(),\n sortDir: 'ASCENDING',\n };\n};\n\n/**\n * Serializes column settings into compact strings for a URL param.\n * Useful to keep table configuration URLs short and readable.\n *\n * Note: This utility function is intended for the TableSettingsDialog working with the\n * native table elements.\n *\n * @example\n * mapColumnsSettingsToStrings({ columnOrder: ['name'], hiddenColumns: [], columnsDetails: { name: { width: 120 } } })\n * // ['name:120']\n */\nexport const mapColumnsSettingsToStrings = ({\n columnOrder = [],\n hiddenColumns = [],\n columnsDetails = {},\n}: ColumnsSettings): string[] => {\n const mappedColumns = columnOrder.map(column => {\n const currentWidth = get(columnsDetails[column], 'width');\n const defaultWidth = get(columnsDetails[column], 'defaultWidth');\n\n const width = currentWidth !== 0 && currentWidth !== defaultWidth ? `:${currentWidth}` : '';\n const hiddenSign = hiddenColumns.includes(column) ? '-' : '';\n\n return `${hiddenSign}${column}${width}`;\n });\n\n return mappedColumns;\n};\n\n/**\n * Parses compact column strings into column settings using defaults.\n * Useful to restore table settings from URL state.\n *\n * Note: This utility function is intended for the TableSettingsDialog working with the\n * native table elements.\n *\n * @example\n * parseColumnsSettingsStrings(['-name:200'], { name: { width: 120, defaultWidth: 120 } })\n */\nexport const parseColumnsSettingsStrings = (\n settings: string[],\n defaultColumnsDetails: TableColumnDetailsMap\n): TableColumnsSettings => {\n const columns: TableColumnsSettings = {\n columnOrder: [],\n hiddenColumns: [],\n columnsDetails: { ...defaultColumnsDetails },\n };\n\n settings.forEach(setting => {\n const [column, columnWidth] = setting.split(':');\n const columnKey = column.startsWith('-') ? column.substr(1) : column;\n\n columns.columnOrder = [...columns.columnOrder, columnKey];\n\n if (columnWidth) {\n const width = Number.parseInt(columnWidth, 10);\n if (Number.isFinite(width)) {\n columns.columnsDetails[columnKey] = { ...columns.columnsDetails[columnKey], width };\n }\n } else {\n columns.columnsDetails[columnKey] = { ...defaultColumnsDetails[columnKey] };\n }\n\n if (column.startsWith('-')) {\n columns.hiddenColumns = [...columns.hiddenColumns, columnKey];\n }\n });\n\n return columns;\n};\n\n/**\n * Serializes new table columns config into compact strings for a URL param.\n *\n * Format:\n * - visible column: `name`\n * - hidden column: `-name`\n * - width override: `name:200`\n *\n * @example\n * serializeColumnsConfig([{ key: 'name', visible: true, width: 120 }], [{ key: 'name', width: 100 }])\n * // ['name:120']\n */\nexport const serializeColumnsConfig = <TColumn extends TableColumnConfigItem>(\n columns: TColumn[],\n defaultColumns: TColumn[] = []\n): string[] => {\n const defaultColumnsByKey = new Map(defaultColumns.map(column => [column.key, column]));\n\n return columns.map(column => {\n const defaultColumn = defaultColumnsByKey.get(column.key);\n const width = !isNil(column.width) && column.width !== defaultColumn?.width ? `:${column.width}` : '';\n const hiddenSign = column.visible === false ? '-' : '';\n\n return `${hiddenSign}${column.key}${width}`;\n });\n};\n\nconst parseColumnWidth = (widthValue: string | undefined, defaultWidth: number | string | undefined) => {\n if (isNil(widthValue) || widthValue === '') {\n return defaultWidth;\n }\n\n return /^-?\\d+(\\.\\d+)?$/.test(widthValue) ? Number(widthValue) : widthValue;\n};\n\n/**\n * Deserializes compact URL strings into new table columns config using defaults.\n *\n * @example\n * deserializeColumnsConfig(['-name:200'], [{ key: 'name', width: 120, visible: true }])\n */\nexport const deserializeColumnsConfig = <TColumn extends TableColumnConfigItem>(\n configStrings: string[],\n defaultColumns: TColumn[]\n): TColumn[] => {\n const defaultColumnsByKey = new Map(defaultColumns.map(column => [column.key, column]));\n const seenColumnKeys = new Set<string>();\n const deserializedColumns: TColumn[] = [];\n\n configStrings.forEach(configString => {\n const [column, columnWidth] = configString.split(':');\n const columnKey = column.startsWith('-') ? column.substring(1) : column;\n const defaultColumn = defaultColumnsByKey.get(columnKey);\n\n if (!defaultColumn) {\n return;\n }\n\n seenColumnKeys.add(columnKey);\n deserializedColumns.push({\n ...defaultColumn,\n visible: !column.startsWith('-'),\n width: parseColumnWidth(columnWidth, defaultColumn.width),\n });\n });\n\n return [...deserializedColumns, ...defaultColumns.filter(defaultColumn => !seenColumnKeys.has(defaultColumn.key))];\n};\n\n// -----------------------------------------------------------------------\n\nexport type UrlTypeMap = {\n string: string;\n number: number;\n boolean: boolean;\n array: string[]; // ?ids=a,b\n 'array-number': number[]; // ?ids=1,2\n object: Record<string, unknown>;\n};\n\nexport type UrlValueType = keyof UrlTypeMap;\n\n// TState = Redux State\n// TValue = value type transported between URL <-> store for this config item.\nexport type UrlConfigItem<TState = unknown, TValue = unknown> = {\n /**\n * The query param key in the URL (e.g., 'q', 'sort')\n */\n key: string;\n\n /**\n * Selector to retrieve the current value from Redux.\n */\n selector: (state: TState) => TValue;\n\n /**\n * Action creator to dispatch the new value to Redux.\n */\n action: (value: TValue) => unknown;\n\n /**\n * The generic type for auto-parsing/serialization\n */\n type?: UrlValueType;\n\n /**\n * Default value for the given key. Must be explicitly provided and\n * must not be `undefined`.\n *\n * 1. If URL is missing the key, this value is applied to Redux.\n * 2. If Redux matches this value, the key is removed from URL.\n */\n defaultValue: Exclude<TValue, undefined>;\n\n /**\n * Navigation behavior when this specific value changes\n *\n * Behavior in `useUrlState`:\n * - `'push'`: every change creates a new history entry.\n * - `'replace'`: changes replace the current entry, except the first\n * transition from default -> non-default, which is pushed once.\n *\n * @default 'push'\n */\n history?: 'push' | 'replace';\n\n /**\n * Optional: Custom function to convert Redux Object -> URL String\n */\n customSerialize?: (reduxValue: TValue) => string | null;\n\n /**\n * Optional: Custom function to convert URL String -> Redux Object\n */\n customDeserialize?: (urlValue: string | null) => TValue | null;\n};\n\nconst encode = (str: string | number) => encodeURIComponent(String(str));\nconst decode = (str: string) => decodeURIComponent(str);\n\n/**\n * Generates a URL query string that mimics 'qs' library behavior\n * by keeping commas and plus signs unencoded for readability.\n */\nexport const toQueryString = (params: URLSearchParams, config: readonly UrlConfigItem[]): string => {\n // Create a map for O(1) lookups\n const configMap = new Map(config.map(c => [c.key, c]));\n const pairs: string[] = [];\n\n params.forEach((value, key) => {\n const item = configMap.get(key);\n\n // 1. Strict Encoding by default (Safe for all strings)\n const encodedKey = encodeURIComponent(key);\n const encodedValue = encodeURIComponent(value);\n\n // 2. Determine if we should make it \"Pretty\"\n // We only prettify complex types where readability matters (lists/objects)\n const isComplexType = item && ['array', 'array-number', 'object'].includes(item.type ?? 'string');\n\n if (isComplexType) {\n // DECODE safe characters for readability\n const prettyValue = encodedValue\n .replace(/%2C/g, ',') // Restore Comma\n .replace(/%3A/g, ':'); // Restore Colon\n\n pairs.push(`${encodedKey}=${prettyValue}`);\n } else {\n // Keep Strict (e.g. for search inputs \"a+b\" -> \"a%2Bb\")\n pairs.push(`${encodedKey}=${encodedValue}`);\n }\n });\n\n return pairs.join('&');\n};\n\n/**\n * Converts a JS value into a string suitable for URLSearchParams.\n * Returns null if the value is empty/invalid.\n */\nexport const serializeValue = <K extends UrlValueType>(\n value: UrlTypeMap[K] | null | undefined,\n type: K\n): string | null => {\n if (isNil(value) || value === '') {\n return null;\n }\n\n switch (type) {\n case 'string':\n case 'number':\n return String(value);\n\n case 'boolean':\n // UX: Output readable \"true\"/\"false\"\n return value ? 'true' : 'false';\n\n case 'array':\n case 'array-number':\n if (!Array.isArray(value) || value.length === 0) {\n return null;\n }\n return value.map(String).join(',');\n\n case 'object':\n if (typeof value !== 'object' || Object.keys(value).length === 0) {\n return null;\n }\n // Format: key:val,key2:val2\n return Object.entries(value)\n .map(([key, objectValue]) => `${encode(key)}:${encode(String(objectValue))}`)\n .join(',');\n\n default:\n return String(value);\n }\n};\n\n/**\n * Internal parser map used by `deserializeValue`.\n *\n * For each supported URL value type key, this map provides the exact parser\n * that converts a raw query-string value into the corresponding `UrlTypeMap` value.\n *\n * This keeps parsing logic centralized and enforces the type contract:\n * a parser for `'number'` must return `number | null`, a parser for `'array'`\n * must return `string[] | null`, and so on.\n */\nconst urlValueDeserializers: { [TValueTypeKey in UrlValueType]: (value: string) => UrlTypeMap[TValueTypeKey] | null } =\n {\n string: value => value,\n\n number: value => {\n const num = Number(value);\n return Number.isNaN(num) ? null : num;\n },\n\n boolean: value => {\n const lower = value.toLowerCase();\n return lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on';\n },\n\n array: value => value.split(',').filter(Boolean),\n\n 'array-number': value =>\n value\n .split(',')\n .map(Number)\n .filter(n => !Number.isNaN(n)),\n\n object: value => {\n const obj: Record<string, string> = {};\n value.split(',').forEach(pair => {\n const [key, val] = pair.split(':');\n if (key && val) {\n obj[decode(key)] = decode(val);\n }\n });\n return obj;\n },\n };\n\n/**\n * Generic deserialize function. Converts a URL string value back into a JS Primitive/Object.\n *\n * <TUrlValueType extends UrlValueType>: Capture the specific string literal passed in (e.g. 'number').\n * Returns: UrlTypeMap[TUrlValueType] | null (e.g. number | null).\n */\nexport const deserializeValue = <TUrlValueType extends UrlValueType>(\n value: string | null,\n type: TUrlValueType\n): UrlTypeMap[TUrlValueType] | null => {\n if (isNil(value)) {\n return null;\n }\n return urlValueDeserializers[type](value);\n};\n"],"names":["getSortDirShort","sortDir","SortDirection","serializeSorting","sortInfo","parseSorting","sortValueShort","mapColumnsSettingsToStrings","columnOrder","hiddenColumns","columnsDetails","column","currentWidth","get","defaultWidth","width","parseColumnsSettingsStrings","settings","defaultColumnsDetails","columns","setting","columnWidth","columnKey","serializeColumnsConfig","defaultColumns","defaultColumnsByKey","defaultColumn","isNil","parseColumnWidth","widthValue","deserializeColumnsConfig","configStrings","seenColumnKeys","deserializedColumns","configString","encode","str","decode","toQueryString","params","config","configMap","c","pairs","value","key","item","encodedKey","encodedValue","prettyValue","serializeValue","type","objectValue","urlValueDeserializers","num","lower","n","obj","pair","val","deserializeValue"],"mappings":";;;;AA4BO,MAAMA,IAAkB,CAACC,MAAqBA,MAAYC,EAAc,aAAa,MAAM,IAQrFC,IAAmB,CAACC,MACxBA,GAAU,SAGR,GAAGJ,EAAgBI,EAAS,OAAO,CAAC,GAAGA,EAAS,MAAM,KAFlD,MAYFC,IAAe,CAACC,MACpBA,IAKDA,EAAe,WAAW,GAAG,IACtB;AAAA,EACH,QAAQA,EAAe,UAAU,CAAC;AAAA;AAAA,EAClC,SAAS;AAAA,IAQbA,EAAe,WAAW,GAAG,IACtB;AAAA,EACH,QAAQA,EAAe,UAAU,CAAC,EAAE,KAAA;AAAA;AAAA,EACpC,SAAS;AAAA,IAKV;AAAA,EACH,QAAQA,EAAe,KAAA;AAAA,EACvB,SAAS;AAAA,IAzBF,MAwCFC,IAA8B,CAAC;AAAA,EACxC,aAAAC,IAAc,CAAA;AAAA,EACd,eAAAC,IAAgB,CAAA;AAAA,EAChB,gBAAAC,IAAiB,CAAA;AACrB,MAC0BF,EAAY,IAAI,CAAAG,MAAU;AAC5C,QAAMC,IAAeC,EAAIH,EAAeC,CAAM,GAAG,OAAO,GAClDG,IAAeD,EAAIH,EAAeC,CAAM,GAAG,cAAc,GAEzDI,IAAQH,MAAiB,KAAKA,MAAiBE,IAAe,IAAIF,CAAY,KAAK;AAGzF,SAAO,GAFYH,EAAc,SAASE,CAAM,IAAI,MAAM,EAEtC,GAAGA,CAAM,GAAGI,CAAK;AACzC,CAAC,GAeQC,IAA8B,CACvCC,GACAC,MACuB;AACvB,QAAMC,IAAgC;AAAA,IAClC,aAAa,CAAA;AAAA,IACb,eAAe,CAAA;AAAA,IACf,gBAAgB,EAAE,GAAGD,EAAA;AAAA,EAAsB;AAG/C,SAAAD,EAAS,QAAQ,CAAAG,MAAW;AACxB,UAAM,CAACT,GAAQU,CAAW,IAAID,EAAQ,MAAM,GAAG,GACzCE,IAAYX,EAAO,WAAW,GAAG,IAAIA,EAAO,OAAO,CAAC,IAAIA;AAI9D,QAFAQ,EAAQ,cAAc,CAAC,GAAGA,EAAQ,aAAaG,CAAS,GAEpDD,GAAa;AACb,YAAMN,IAAQ,OAAO,SAASM,GAAa,EAAE;AAC7C,MAAI,OAAO,SAASN,CAAK,MACrBI,EAAQ,eAAeG,CAAS,IAAI,EAAE,GAAGH,EAAQ,eAAeG,CAAS,GAAG,OAAAP,EAAA;AAAA,IAEpF;AACI,MAAAI,EAAQ,eAAeG,CAAS,IAAI,EAAE,GAAGJ,EAAsBI,CAAS,EAAA;AAG5E,IAAIX,EAAO,WAAW,GAAG,MACrBQ,EAAQ,gBAAgB,CAAC,GAAGA,EAAQ,eAAeG,CAAS;AAAA,EAEpE,CAAC,GAEMH;AACX,GAcaI,IAAyB,CAClCJ,GACAK,IAA4B,OACjB;AACX,QAAMC,IAAsB,IAAI,IAAID,EAAe,IAAI,CAAAb,MAAU,CAACA,EAAO,KAAKA,CAAM,CAAC,CAAC;AAEtF,SAAOQ,EAAQ,IAAI,CAAAR,MAAU;AACzB,UAAMe,IAAgBD,EAAoB,IAAId,EAAO,GAAG,GAClDI,IAAQ,CAACY,EAAMhB,EAAO,KAAK,KAAKA,EAAO,UAAUe,GAAe,QAAQ,IAAIf,EAAO,KAAK,KAAK;AAGnG,WAAO,GAFYA,EAAO,YAAY,KAAQ,MAAM,EAEhC,GAAGA,EAAO,GAAG,GAAGI,CAAK;AAAA,EAC7C,CAAC;AACL,GAEMa,IAAmB,CAACC,GAAgCf,MAClDa,EAAME,CAAU,KAAKA,MAAe,KAC7Bf,IAGJ,kBAAkB,KAAKe,CAAU,IAAI,OAAOA,CAAU,IAAIA,GASxDC,IAA2B,CACpCC,GACAP,MACY;AACZ,QAAMC,IAAsB,IAAI,IAAID,EAAe,IAAI,CAAAb,MAAU,CAACA,EAAO,KAAKA,CAAM,CAAC,CAAC,GAChFqB,wBAAqB,IAAA,GACrBC,IAAiC,CAAA;AAEvC,SAAAF,EAAc,QAAQ,CAAAG,MAAgB;AAClC,UAAM,CAACvB,GAAQU,CAAW,IAAIa,EAAa,MAAM,GAAG,GAC9CZ,IAAYX,EAAO,WAAW,GAAG,IAAIA,EAAO,UAAU,CAAC,IAAIA,GAC3De,IAAgBD,EAAoB,IAAIH,CAAS;AAEvD,IAAKI,MAILM,EAAe,IAAIV,CAAS,GAC5BW,EAAoB,KAAK;AAAA,MACrB,GAAGP;AAAA,MACH,SAAS,CAACf,EAAO,WAAW,GAAG;AAAA,MAC/B,OAAOiB,EAAiBP,GAAaK,EAAc,KAAK;AAAA,IAAA,CAC3D;AAAA,EACL,CAAC,GAEM,CAAC,GAAGO,GAAqB,GAAGT,EAAe,OAAO,CAAAE,MAAiB,CAACM,EAAe,IAAIN,EAAc,GAAG,CAAC,CAAC;AACrH,GAsEMS,IAAS,CAACC,MAAyB,mBAAmB,OAAOA,CAAG,CAAC,GACjEC,IAAS,CAACD,MAAgB,mBAAmBA,CAAG,GAMzCE,IAAgB,CAACC,GAAyBC,MAA6C;AAEhG,QAAMC,IAAY,IAAI,IAAID,EAAO,IAAI,CAAAE,MAAK,CAACA,EAAE,KAAKA,CAAC,CAAC,CAAC,GAC/CC,IAAkB,CAAA;AAExB,SAAAJ,EAAO,QAAQ,CAACK,GAAOC,MAAQ;AAC3B,UAAMC,IAAOL,EAAU,IAAII,CAAG,GAGxBE,IAAa,mBAAmBF,CAAG,GACnCG,IAAe,mBAAmBJ,CAAK;AAM7C,QAFsBE,KAAQ,CAAC,SAAS,gBAAgB,QAAQ,EAAE,SAASA,EAAK,QAAQ,QAAQ,GAE7E;AAEf,YAAMG,IAAcD,EACf,QAAQ,QAAQ,GAAG,EACnB,QAAQ,QAAQ,GAAG;AAExB,MAAAL,EAAM,KAAK,GAAGI,CAAU,IAAIE,CAAW,EAAE;AAAA,IAC7C;AAEI,MAAAN,EAAM,KAAK,GAAGI,CAAU,IAAIC,CAAY,EAAE;AAAA,EAElD,CAAC,GAEML,EAAM,KAAK,GAAG;AACzB,GAMaO,IAAiB,CAC1BN,GACAO,MACgB;AAChB,MAAIxB,EAAMiB,CAAK,KAAKA,MAAU;AAC1B,WAAO;AAGX,UAAQO,GAAA;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACD,aAAO,OAAOP,CAAK;AAAA,IAEvB,KAAK;AAED,aAAOA,IAAQ,SAAS;AAAA,IAE5B,KAAK;AAAA,IACL,KAAK;AACD,aAAI,CAAC,MAAM,QAAQA,CAAK,KAAKA,EAAM,WAAW,IACnC,OAEJA,EAAM,IAAI,MAAM,EAAE,KAAK,GAAG;AAAA,IAErC,KAAK;AACD,aAAI,OAAOA,KAAU,YAAY,OAAO,KAAKA,CAAK,EAAE,WAAW,IACpD,OAGJ,OAAO,QAAQA,CAAK,EACtB,IAAI,CAAC,CAACC,GAAKO,CAAW,MAAM,GAAGjB,EAAOU,CAAG,CAAC,IAAIV,EAAO,OAAOiB,CAAW,CAAC,CAAC,EAAE,EAC3E,KAAK,GAAG;AAAA,IAEjB;AACI,aAAO,OAAOR,CAAK;AAAA,EAAA;AAE/B,GAYMS,IACF;AAAA,EACI,QAAQ,CAAAT,MAASA;AAAA,EAEjB,QAAQ,CAAAA,MAAS;AACb,UAAMU,IAAM,OAAOV,CAAK;AACxB,WAAO,OAAO,MAAMU,CAAG,IAAI,OAAOA;AAAA,EACtC;AAAA,EAEA,SAAS,CAAAV,MAAS;AACd,UAAMW,IAAQX,EAAM,YAAA;AACpB,WAAOW,MAAU,UAAUA,MAAU,OAAOA,MAAU,SAASA,MAAU;AAAA,EAC7E;AAAA,EAEA,OAAO,CAAAX,MAASA,EAAM,MAAM,GAAG,EAAE,OAAO,OAAO;AAAA,EAE/C,gBAAgB,CAAAA,MACZA,EACK,MAAM,GAAG,EACT,IAAI,MAAM,EACV,OAAO,CAAAY,MAAK,CAAC,OAAO,MAAMA,CAAC,CAAC;AAAA,EAErC,QAAQ,CAAAZ,MAAS;AACb,UAAMa,IAA8B,CAAA;AACpC,WAAAb,EAAM,MAAM,GAAG,EAAE,QAAQ,CAAAc,MAAQ;AAC7B,YAAM,CAACb,GAAKc,CAAG,IAAID,EAAK,MAAM,GAAG;AACjC,MAAIb,KAAOc,MACPF,EAAIpB,EAAOQ,CAAG,CAAC,IAAIR,EAAOsB,CAAG;AAAA,IAErC,CAAC,GACMF;AAAA,EACX;AACJ,GAQSG,IAAmB,CAC5BhB,GACAO,MAEIxB,EAAMiB,CAAK,IACJ,OAEJS,EAAsBF,CAAI,EAAEP,CAAK;"}
1
+ {"version":3,"file":"routeUtils.js","sources":["../../src/utils/routeUtils.ts"],"sourcesContent":["import { get } from 'es-toolkit/compat';\nimport { isEqual, isNil } from 'es-toolkit';\n\nimport { SortDirection, type SortDirectionType } from './SortUtils';\nimport type { TableColumnDetailsMap, TableColumnsSettings } from '../components/table/native/TableSettingsDialog';\n\n// Re-export isEqual for use in the Consumer's useSelector\nexport { isEqual };\n\n// Moved type definition to TableSettingsDialog but reexported here for backwards compatibility\n// TODO: remove this re-export for next major release 3.0\nexport type ColumnsSettings = TableColumnsSettings;\n\nexport type TableColumnConfigItem = {\n key: string;\n visible?: boolean;\n width?: number | string;\n};\n\n/**\n * Returns a compact sort direction prefix for use in URL params.\n * Serialize: Ascending = \"\", Descending = \"-\"\n *\n * Useful for concise sort state like `sort=-name` or `sort=name`.\n *\n * @example\n * getSortDirShort(SortDirection.DESCENDING) // '-'\n */\nexport const getSortDirShort = (sortDir: string) => (sortDir === SortDirection.DESCENDING ? '-' : '');\n\n/**\n * Returns a serialized string of the sort order and sort direction.\n *\n * @param sortInfo { sortDir: SortDirectionType; sortBy: string }\n * @returns\n */\nexport const serializeSorting = (sortInfo: { sortDir: SortDirectionType; sortBy: string }) => {\n if (!sortInfo?.sortBy) {\n return null;\n }\n return `${getSortDirShort(sortInfo.sortDir)}${sortInfo.sortBy}`;\n};\n\n/**\n * Parses a compact sort param (e.g. `name` or `-name`) into sort fields.\n * Useful when reading URL params into table state.\n *\n * @example\n * parseSorting('-createdAt') // { sortBy: 'createdAt', sortDir: 'desc' }\n */\nexport const parseSorting = (sortValueShort: string | null | undefined) => {\n if (!sortValueShort) {\n return null;\n }\n\n // Check for descending prefix\n if (sortValueShort.startsWith('-')) {\n return {\n sortBy: sortValueShort.substring(1), // remove '-'\n sortDir: SortDirection.DESCENDING,\n };\n }\n\n // Check for legacy ascending prefix (optional, for backward compat)\n // There was even a bug in qs 6.7.0 where the '+' sorting will be parsed as a\n // space by qs even though decoding is disabled\n // therefore, we need to trim the value\n if (sortValueShort.startsWith('+')) {\n return {\n sortBy: sortValueShort.substring(1).trim(), // remove '+' and potential space\n sortDir: SortDirection.ASCENDING,\n };\n }\n\n // Default: No prefix = Ascending\n return {\n sortBy: sortValueShort.trim(),\n sortDir: SortDirection.ASCENDING,\n };\n};\n\n/**\n * Serializes column settings into compact strings for a URL param.\n * Useful to keep table configuration URLs short and readable.\n *\n * Note: This utility function is intended for the TableSettingsDialog working with the\n * native table elements.\n *\n * @example\n * mapColumnsSettingsToStrings({ columnOrder: ['name'], hiddenColumns: [], columnsDetails: { name: { width: 120 } } })\n * // ['name:120']\n */\nexport const mapColumnsSettingsToStrings = ({\n columnOrder = [],\n hiddenColumns = [],\n columnsDetails = {},\n}: ColumnsSettings): string[] => {\n const mappedColumns = columnOrder.map(column => {\n const currentWidth = get(columnsDetails[column], 'width');\n const defaultWidth = get(columnsDetails[column], 'defaultWidth');\n\n const width = currentWidth !== 0 && currentWidth !== defaultWidth ? `:${currentWidth}` : '';\n const hiddenSign = hiddenColumns.includes(column) ? '-' : '';\n\n return `${hiddenSign}${column}${width}`;\n });\n\n return mappedColumns;\n};\n\n/**\n * Parses compact column strings into column settings using defaults.\n * Useful to restore table settings from URL state.\n *\n * Note: This utility function is intended for the TableSettingsDialog working with the\n * native table elements.\n *\n * @example\n * parseColumnsSettingsStrings(['-name:200'], { name: { width: 120, defaultWidth: 120 } })\n */\nexport const parseColumnsSettingsStrings = (\n settings: string[],\n defaultColumnsDetails: TableColumnDetailsMap\n): TableColumnsSettings => {\n const columns: TableColumnsSettings = {\n columnOrder: [],\n hiddenColumns: [],\n columnsDetails: { ...defaultColumnsDetails },\n };\n\n settings.forEach(setting => {\n const [column, columnWidth] = setting.split(':');\n const columnKey = column.startsWith('-') ? column.substr(1) : column;\n\n columns.columnOrder = [...columns.columnOrder, columnKey];\n\n if (columnWidth) {\n const width = Number.parseInt(columnWidth, 10);\n if (Number.isFinite(width)) {\n columns.columnsDetails[columnKey] = { ...columns.columnsDetails[columnKey], width };\n }\n } else {\n columns.columnsDetails[columnKey] = { ...defaultColumnsDetails[columnKey] };\n }\n\n if (column.startsWith('-')) {\n columns.hiddenColumns = [...columns.hiddenColumns, columnKey];\n }\n });\n\n return columns;\n};\n\n/**\n * Serializes new table columns config into compact strings for a URL param.\n *\n * Format:\n * - visible column: `name`\n * - hidden column: `-name`\n * - width override: `name:200`\n *\n * @example\n * serializeColumnsConfig([{ key: 'name', visible: true, width: 120 }], [{ key: 'name', width: 100 }])\n * // ['name:120']\n */\nexport const serializeColumnsConfig = <TColumn extends TableColumnConfigItem>(\n columns: TColumn[],\n defaultColumns: TColumn[] = []\n): string[] => {\n const defaultColumnsByKey = new Map(defaultColumns.map(column => [column.key, column]));\n\n return columns.map(column => {\n const defaultColumn = defaultColumnsByKey.get(column.key);\n const width = !isNil(column.width) && column.width !== defaultColumn?.width ? `:${column.width}` : '';\n const hiddenSign = column.visible === false ? '-' : '';\n\n return `${hiddenSign}${column.key}${width}`;\n });\n};\n\nconst parseColumnWidth = (widthValue: string | undefined, defaultWidth: number | string | undefined) => {\n if (isNil(widthValue) || widthValue === '') {\n return defaultWidth;\n }\n\n return /^-?\\d+(\\.\\d+)?$/.test(widthValue) ? Number(widthValue) : widthValue;\n};\n\n/**\n * Deserializes compact URL strings into new table columns config using defaults.\n *\n * @example\n * deserializeColumnsConfig(['-name:200'], [{ key: 'name', width: 120, visible: true }])\n */\nexport const deserializeColumnsConfig = <TColumn extends TableColumnConfigItem>(\n configStrings: string[],\n defaultColumns: TColumn[]\n): TColumn[] => {\n const defaultColumnsByKey = new Map(defaultColumns.map(column => [column.key, column]));\n const seenColumnKeys = new Set<string>();\n const deserializedColumns: TColumn[] = [];\n\n configStrings.forEach(configString => {\n const [column, columnWidth] = configString.split(':');\n const columnKey = column.startsWith('-') ? column.substring(1) : column;\n const defaultColumn = defaultColumnsByKey.get(columnKey);\n\n if (!defaultColumn) {\n return;\n }\n\n seenColumnKeys.add(columnKey);\n deserializedColumns.push({\n ...defaultColumn,\n visible: !column.startsWith('-'),\n width: parseColumnWidth(columnWidth, defaultColumn.width),\n });\n });\n\n return [...deserializedColumns, ...defaultColumns.filter(defaultColumn => !seenColumnKeys.has(defaultColumn.key))];\n};\n\n// -----------------------------------------------------------------------\n\nexport type UrlTypeMap = {\n string: string;\n number: number;\n boolean: boolean;\n array: string[]; // ?ids=a,b\n 'array-number': number[]; // ?ids=1,2\n object: Record<string, unknown>;\n};\n\nexport type UrlValueType = keyof UrlTypeMap;\n\n// TState = Redux State\n// TValue = value type transported between URL <-> store for this config item.\nexport type UrlConfigItem<TState = unknown, TValue = unknown> = {\n /**\n * The query param key in the URL (e.g., 'q', 'sort')\n */\n key: string;\n\n /**\n * Selector to retrieve the current value from Redux.\n */\n selector: (state: TState) => TValue;\n\n /**\n * Action creator to dispatch the new value to Redux.\n */\n action: (value: TValue) => unknown;\n\n /**\n * The generic type for auto-parsing/serialization\n */\n type?: UrlValueType;\n\n /**\n * Default value for the given key. Must be explicitly provided and\n * must not be `undefined`.\n *\n * 1. If URL is missing the key, this value is applied to Redux.\n * 2. If Redux matches this value, the key is removed from URL.\n */\n defaultValue: Exclude<TValue, undefined>;\n\n /**\n * Navigation behavior when this specific value changes\n *\n * Behavior in `useUrlState`:\n * - `'push'`: every change creates a new history entry.\n * - `'replace'`: changes replace the current entry, except the first\n * transition from default -> non-default, which is pushed once.\n *\n * @default 'push'\n */\n history?: 'push' | 'replace';\n\n /**\n * Optional: Custom function to convert Redux Object -> URL String\n */\n customSerialize?: (reduxValue: TValue) => string | null;\n\n /**\n * Optional: Custom function to convert URL String -> Redux Object\n */\n customDeserialize?: (urlValue: string | null) => TValue | null;\n};\n\nconst encode = (str: string | number) => encodeURIComponent(String(str));\nconst decode = (str: string) => decodeURIComponent(str);\n\n/**\n * Generates a URL query string that mimics 'qs' library behavior\n * by keeping commas and plus signs unencoded for readability.\n */\nexport const toQueryString = (params: URLSearchParams, config: readonly UrlConfigItem[]): string => {\n // Create a map for O(1) lookups\n const configMap = new Map(config.map(c => [c.key, c]));\n const pairs: string[] = [];\n\n params.forEach((value, key) => {\n const item = configMap.get(key);\n\n // 1. Strict Encoding by default (Safe for all strings)\n const encodedKey = encodeURIComponent(key);\n const encodedValue = encodeURIComponent(value);\n\n // 2. Determine if we should make it \"Pretty\"\n // We only prettify complex types where readability matters (lists/objects)\n const isComplexType = item && ['array', 'array-number', 'object'].includes(item.type ?? 'string');\n\n if (isComplexType) {\n // DECODE safe characters for readability\n const prettyValue = encodedValue\n .replace(/%2C/g, ',') // Restore Comma\n .replace(/%3A/g, ':'); // Restore Colon\n\n pairs.push(`${encodedKey}=${prettyValue}`);\n } else {\n // Keep Strict (e.g. for search inputs \"a+b\" -> \"a%2Bb\")\n pairs.push(`${encodedKey}=${encodedValue}`);\n }\n });\n\n return pairs.join('&');\n};\n\n/**\n * Converts a JS value into a string suitable for URLSearchParams.\n * Returns null if the value is empty/invalid.\n */\nexport const serializeValue = <K extends UrlValueType>(\n value: UrlTypeMap[K] | null | undefined,\n type: K\n): string | null => {\n if (isNil(value) || value === '') {\n return null;\n }\n\n switch (type) {\n case 'string':\n case 'number':\n return String(value);\n\n case 'boolean':\n // UX: Output readable \"true\"/\"false\"\n return value ? 'true' : 'false';\n\n case 'array':\n case 'array-number':\n if (!Array.isArray(value) || value.length === 0) {\n return null;\n }\n return value.map(String).join(',');\n\n case 'object':\n if (typeof value !== 'object' || Object.keys(value).length === 0) {\n return null;\n }\n // Format: key:val,key2:val2\n return Object.entries(value)\n .map(([key, objectValue]) => `${encode(key)}:${encode(String(objectValue))}`)\n .join(',');\n\n default:\n return String(value);\n }\n};\n\n/**\n * Internal parser map used by `deserializeValue`.\n *\n * For each supported URL value type key, this map provides the exact parser\n * that converts a raw query-string value into the corresponding `UrlTypeMap` value.\n *\n * This keeps parsing logic centralized and enforces the type contract:\n * a parser for `'number'` must return `number | null`, a parser for `'array'`\n * must return `string[] | null`, and so on.\n */\nconst urlValueDeserializers: { [TValueTypeKey in UrlValueType]: (value: string) => UrlTypeMap[TValueTypeKey] | null } =\n {\n string: value => value,\n\n number: value => {\n const num = Number(value);\n return Number.isNaN(num) ? null : num;\n },\n\n boolean: value => {\n const lower = value.toLowerCase();\n return lower === 'true' || lower === '1' || lower === 'yes' || lower === 'on';\n },\n\n array: value => value.split(',').filter(Boolean),\n\n 'array-number': value =>\n value\n .split(',')\n .map(Number)\n .filter(n => !Number.isNaN(n)),\n\n object: value => {\n const obj: Record<string, string> = {};\n value.split(',').forEach(pair => {\n const [key, val] = pair.split(':');\n if (key && val) {\n obj[decode(key)] = decode(val);\n }\n });\n return obj;\n },\n };\n\n/**\n * Generic deserialize function. Converts a URL string value back into a JS Primitive/Object.\n *\n * <TUrlValueType extends UrlValueType>: Capture the specific string literal passed in (e.g. 'number').\n * Returns: UrlTypeMap[TUrlValueType] | null (e.g. number | null).\n */\nexport const deserializeValue = <TUrlValueType extends UrlValueType>(\n value: string | null,\n type: TUrlValueType\n): UrlTypeMap[TUrlValueType] | null => {\n if (isNil(value)) {\n return null;\n }\n return urlValueDeserializers[type](value);\n};\n"],"names":["getSortDirShort","sortDir","SortDirection","serializeSorting","sortInfo","parseSorting","sortValueShort","mapColumnsSettingsToStrings","columnOrder","hiddenColumns","columnsDetails","column","currentWidth","get","defaultWidth","width","parseColumnsSettingsStrings","settings","defaultColumnsDetails","columns","setting","columnWidth","columnKey","serializeColumnsConfig","defaultColumns","defaultColumnsByKey","defaultColumn","isNil","parseColumnWidth","widthValue","deserializeColumnsConfig","configStrings","seenColumnKeys","deserializedColumns","configString","encode","str","decode","toQueryString","params","config","configMap","c","pairs","value","key","item","encodedKey","encodedValue","prettyValue","serializeValue","type","objectValue","urlValueDeserializers","num","lower","n","obj","pair","val","deserializeValue"],"mappings":"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"}
package/version.d.ts CHANGED
@@ -1 +1 @@
1
- export const version: "2.3.0-beta.1";
1
+ export const version: "2.3.0-beta.2";
package/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const e = "2.3.0-beta.1";
1
+ const e = "2.3.0-beta.2";
2
2
  export {
3
3
  e as version
4
4
  };
package/version.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/version.js"],"sourcesContent":["export const version = '2.3.0-beta.1';\n"],"names":["version"],"mappings":"AAAY,MAACA,IAAU;"}
1
+ {"version":3,"file":"version.js","sources":["../src/version.js"],"sourcesContent":["export const version = '2.3.0-beta.2';\n"],"names":["version"],"mappings":"AAAY,MAACA,IAAU;"}
@@ -1,63 +0,0 @@
1
- import { MotionProps } from 'motion/react';
2
- import { ReactNode } from 'react';
3
- import { TableHorizontalAlign, TableRowId, TableVerticalAlign } from './Table.types';
4
- export type TableCardsStyleSettings = {
5
- /**
6
- * Minimum card width for `MULTI_CARDS` view.
7
- */
8
- minWidth?: number | string;
9
- /**
10
- * Maximum card width for `MULTI_CARDS` view.
11
- */
12
- maxWidth?: number | string;
13
- /**
14
- * Additional classes for each card row in card views.
15
- */
16
- className?: string;
17
- /**
18
- * Additional classes for each card cell in card views.
19
- */
20
- rowClassName?: string;
21
- /**
22
- * Additional classes for each card label in card views.
23
- */
24
- labelClassName?: string;
25
- /**
26
- * Additional classes for each card content in card views.
27
- */
28
- contentClassName?: string;
29
- };
30
- export type TableCardCell = {
31
- key: string;
32
- content: ReactNode;
33
- mobileLabel?: string;
34
- horizontalAlign?: TableHorizontalAlign;
35
- verticalAlign?: TableVerticalAlign;
36
- className?: string;
37
- contentClassName?: string;
38
- hideOnMobile?: boolean;
39
- preventRowClick?: boolean;
40
- };
41
- export type TableCardProps<RowType extends Record<string, unknown>> = {
42
- active?: boolean;
43
- disabled?: boolean;
44
- expanded?: boolean;
45
- selected?: boolean;
46
- row: RowType;
47
- rowIndex: number;
48
- rowKeyValue: string | number;
49
- cells: TableCardCell[];
50
- cardRowClassName?: string;
51
- cardCellClassName?: string;
52
- cardLabelClassName?: string;
53
- cardContentClassName?: string;
54
- rowClassName?: string;
55
- rowAnimationProps?: MotionProps;
56
- isClickable: boolean;
57
- onActiveRowChange?: (rowId: TableRowId | undefined, row: RowType, rowIndex: number) => void;
58
- onRowClick?: (row: RowType, rowIndex: number) => void;
59
- onToggleRowSelection?: (rowId: TableRowId) => void;
60
- showSelectionColumn?: boolean;
61
- };
62
- declare const TableCard: <RowType extends Record<string, unknown>>(props: TableCardProps<RowType>) => import("react/jsx-runtime").JSX.Element;
63
- export default TableCard;
@@ -1,150 +0,0 @@
1
- import { jsxs as N, Fragment as T, jsx as t } from "react/jsx-runtime";
2
- import { useReducedMotion as V, motion as $ } from "motion/react";
3
- import E from "../checkbox/Checkbox.js";
4
- import { useState as F, useMemo as H } from "react";
5
- import n from "../../utils/classNames.js";
6
- import { getVerticalAlignClassName as q, getHorizontalAlignClassName as B } from "./shared/getAlignClassName.js";
7
- import { getInteractiveRowProps as G } from "./shared/getInteractiveRowProps.js";
8
- import { resolveAriaColIndex as J } from "./shared/resolveTableAria.js";
9
- const x = 0.18, oe = (k) => {
10
- const {
11
- active: c,
12
- disabled: s,
13
- expanded: o,
14
- selected: d,
15
- row: f,
16
- rowIndex: A,
17
- rowKeyValue: i,
18
- cells: I,
19
- cardRowClassName: R,
20
- cardCellClassName: m,
21
- cardLabelClassName: P,
22
- cardContentClassName: D,
23
- rowClassName: K,
24
- rowAnimationProps: C,
25
- isClickable: S,
26
- onActiveRowChange: O,
27
- onRowClick: M,
28
- onToggleRowSelection: L,
29
- showSelectionColumn: p
30
- } = k, [j, b] = F(o), w = V(), a = G({
31
- isClickable: S && !s,
32
- onRowClick: (e, l) => {
33
- M?.(e, l), O?.(c ? void 0 : i, e, l);
34
- },
35
- row: f,
36
- rowIndex: A
37
- }), v = (e) => {
38
- e.stopPropagation();
39
- }, h = H(() => {
40
- if (o)
41
- return w ? {
42
- initial: { opacity: 0 },
43
- animate: { opacity: 1, transition: { duration: 0.12, ease: "easeInOut" } },
44
- exit: { opacity: 0, transition: { duration: 0.12, ease: "easeInOut" } }
45
- } : {
46
- initial: { opacity: 0, height: 0, y: -8 },
47
- animate: {
48
- opacity: 1,
49
- height: "auto",
50
- y: 0,
51
- transition: { duration: x, ease: "easeOut" }
52
- },
53
- exit: {
54
- opacity: 0,
55
- height: 0,
56
- y: -8,
57
- transition: { duration: x, ease: "easeInOut" }
58
- }
59
- };
60
- }, [o, w]), r = h || C ? {
61
- ...h,
62
- ...C
63
- } : void 0, u = r?.style, z = o ? {
64
- ...u,
65
- overflow: j ? "hidden" : "visible"
66
- } : u, y = n(
67
- "table-row",
68
- "divider-y-1 divider-color-lighter divider-style-solid",
69
- c && "table-row-active",
70
- s && "table-row-disabled",
71
- o && "table-row-expanded-data",
72
- d && "table-row-selected",
73
- R,
74
- a.isClickableClassName,
75
- K
76
- ), g = /* @__PURE__ */ N(T, { children: [
77
- p && /* @__PURE__ */ t(
78
- "div",
79
- {
80
- className: n("table-cell table-selection-cell", m),
81
- role: "cell",
82
- "aria-colindex": 1,
83
- onClick: (e) => e.stopPropagation(),
84
- onKeyDown: (e) => e.stopPropagation(),
85
- children: /* @__PURE__ */ t("div", { className: "table-selection-control", children: /* @__PURE__ */ t(
86
- E,
87
- {
88
- checked: d,
89
- disabled: s,
90
- onChange: () => L?.(i)
91
- }
92
- ) })
93
- }
94
- ),
95
- I.map((e, l) => /* @__PURE__ */ N(
96
- "div",
97
- {
98
- className: n(
99
- "table-cell",
100
- m,
101
- B(e.horizontalAlign),
102
- q(e.verticalAlign),
103
- e.hideOnMobile && "table-hide-mobile",
104
- e.className
105
- ),
106
- "data-column": e.key,
107
- role: "cell",
108
- "aria-colindex": J(l + 1, p),
109
- onClick: e.preventRowClick ? v : void 0,
110
- onKeyDown: e.preventRowClick ? v : void 0,
111
- children: [
112
- e.mobileLabel && /* @__PURE__ */ t("div", { className: n("table-cell-label", P), children: e.mobileLabel }),
113
- /* @__PURE__ */ t("div", { className: n("table-cell-content", D, e.contentClassName), children: e.content })
114
- ]
115
- },
116
- `${String(i)}-${e.key}`
117
- ))
118
- ] });
119
- return r ? /* @__PURE__ */ t(
120
- $.div,
121
- {
122
- className: y,
123
- onClick: a.onClick,
124
- onKeyDown: a.onKeyDown,
125
- role: "row",
126
- tabIndex: a.tabIndex,
127
- onAnimationStart: o ? () => b(!0) : void 0,
128
- onAnimationComplete: o ? () => b(!1) : void 0,
129
- ...r,
130
- style: z,
131
- children: g
132
- },
133
- i
134
- ) : /* @__PURE__ */ t(
135
- "div",
136
- {
137
- className: y,
138
- onClick: a.onClick,
139
- onKeyDown: a.onKeyDown,
140
- role: "row",
141
- tabIndex: a.tabIndex,
142
- children: g
143
- },
144
- i
145
- );
146
- };
147
- export {
148
- oe as default
149
- };
150
- //# sourceMappingURL=TableCard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableCard.js","sources":["../../../src/components/table/TableCard.tsx"],"sourcesContent":["import { motion, type MotionProps, useReducedMotion } from 'motion/react';\nimport Checkbox from '../checkbox/Checkbox';\nimport { useMemo, useState, type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from 'react';\n\nimport classNames from '../../utils/classNames';\nimport { getHorizontalAlignClassName, getVerticalAlignClassName } from './shared/getAlignClassName';\nimport { getInteractiveRowProps } from './shared/getInteractiveRowProps';\nimport { resolveAriaColIndex } from './shared/resolveTableAria';\nimport type { TableHorizontalAlign, TableRowId, TableVerticalAlign } from './Table.types';\n\nexport type TableCardsStyleSettings = {\n /**\n * Minimum card width for `MULTI_CARDS` view.\n */\n minWidth?: number | string;\n\n /**\n * Maximum card width for `MULTI_CARDS` view.\n */\n maxWidth?: number | string;\n\n /**\n * Additional classes for each card row in card views.\n */\n className?: string;\n\n /**\n * Additional classes for each card cell in card views.\n */\n rowClassName?: string;\n\n /**\n * Additional classes for each card label in card views.\n */\n labelClassName?: string;\n\n /**\n * Additional classes for each card content in card views.\n */\n contentClassName?: string;\n};\n\nexport type TableCardCell = {\n key: string;\n content: ReactNode;\n mobileLabel?: string;\n horizontalAlign?: TableHorizontalAlign;\n verticalAlign?: TableVerticalAlign;\n className?: string;\n contentClassName?: string;\n hideOnMobile?: boolean;\n preventRowClick?: boolean;\n};\n\nexport type TableCardProps<RowType extends Record<string, unknown>> = {\n active?: boolean;\n disabled?: boolean;\n expanded?: boolean;\n selected?: boolean;\n row: RowType;\n rowIndex: number;\n rowKeyValue: string | number;\n cells: TableCardCell[];\n cardRowClassName?: string;\n cardCellClassName?: string;\n cardLabelClassName?: string;\n cardContentClassName?: string;\n rowClassName?: string;\n rowAnimationProps?: MotionProps;\n isClickable: boolean;\n onActiveRowChange?: (rowId: TableRowId | undefined, row: RowType, rowIndex: number) => void;\n onRowClick?: (row: RowType, rowIndex: number) => void;\n onToggleRowSelection?: (rowId: TableRowId) => void;\n showSelectionColumn?: boolean;\n};\n\nconst expandedCardDuration = 0.18;\n\nconst TableCard = <RowType extends Record<string, unknown>>(props: TableCardProps<RowType>) => {\n const {\n active,\n disabled,\n expanded,\n selected,\n row,\n rowIndex,\n rowKeyValue,\n cells,\n cardRowClassName,\n cardCellClassName,\n cardLabelClassName,\n cardContentClassName,\n rowClassName,\n rowAnimationProps,\n isClickable,\n onActiveRowChange,\n onRowClick,\n onToggleRowSelection,\n showSelectionColumn,\n } = props;\n\n const [isAnimating, setIsAnimating] = useState(expanded);\n const shouldReduceMotion = useReducedMotion();\n\n const interactiveRowProps = getInteractiveRowProps({\n isClickable: isClickable && !disabled,\n onRowClick: (clickedRow, clickedRowIndex) => {\n onRowClick?.(clickedRow, clickedRowIndex);\n onActiveRowChange?.(active ? undefined : rowKeyValue, clickedRow, clickedRowIndex);\n },\n row,\n rowIndex,\n });\n\n const handleCellInteraction = (event: KeyboardEvent<HTMLDivElement> | MouseEvent<HTMLDivElement>) => {\n event.stopPropagation();\n };\n\n const defaultExpandedAnimationProps = useMemo<MotionProps | undefined>(() => {\n if (!expanded) {\n return;\n }\n\n if (shouldReduceMotion) {\n return {\n initial: { opacity: 0 },\n animate: { opacity: 1, transition: { duration: 0.12, ease: 'easeInOut' as const } },\n exit: { opacity: 0, transition: { duration: 0.12, ease: 'easeInOut' as const } },\n };\n }\n\n return {\n initial: { opacity: 0, height: 0, y: -8 },\n animate: {\n opacity: 1,\n height: 'auto',\n y: 0,\n transition: { duration: expandedCardDuration, ease: 'easeOut' as const },\n },\n exit: {\n opacity: 0,\n height: 0,\n y: -8,\n transition: { duration: expandedCardDuration, ease: 'easeInOut' as const },\n },\n };\n }, [expanded, shouldReduceMotion]);\n\n const resolvedRowAnimationProps =\n defaultExpandedAnimationProps || rowAnimationProps\n ? {\n ...defaultExpandedAnimationProps,\n ...rowAnimationProps,\n }\n : undefined;\n\n const motionStyle = resolvedRowAnimationProps?.style as CSSProperties | undefined;\n const resolvedRowStyle = expanded\n ? {\n ...motionStyle,\n overflow: isAnimating ? 'hidden' : 'visible',\n }\n : motionStyle;\n\n const rowClassNames = classNames(\n 'table-row',\n 'divider-y-1 divider-color-lighter divider-style-solid',\n active && 'table-row-active',\n disabled && 'table-row-disabled',\n expanded && 'table-row-expanded-data',\n selected && 'table-row-selected',\n cardRowClassName,\n interactiveRowProps.isClickableClassName,\n rowClassName\n );\n\n const rowContent = (\n <>\n {showSelectionColumn && (\n <div\n className={classNames('table-cell table-selection-cell', cardCellClassName)}\n role='cell'\n aria-colindex={1}\n onClick={event => event.stopPropagation()}\n onKeyDown={event => event.stopPropagation()}\n >\n <div className='table-selection-control'>\n <Checkbox\n checked={selected}\n disabled={disabled}\n onChange={() => onToggleRowSelection?.(rowKeyValue)}\n />\n </div>\n </div>\n )}\n {cells.map((cell, cellIndex) => (\n <div\n key={`${String(rowKeyValue)}-${cell.key}`}\n className={classNames(\n 'table-cell',\n cardCellClassName,\n getHorizontalAlignClassName(cell.horizontalAlign),\n getVerticalAlignClassName(cell.verticalAlign),\n cell.hideOnMobile && 'table-hide-mobile',\n cell.className\n )}\n data-column={cell.key}\n role='cell'\n aria-colindex={resolveAriaColIndex(cellIndex + 1, showSelectionColumn)}\n onClick={cell.preventRowClick ? handleCellInteraction : undefined}\n onKeyDown={cell.preventRowClick ? handleCellInteraction : undefined}\n >\n {cell.mobileLabel && (\n <div className={classNames('table-cell-label', cardLabelClassName)}>{cell.mobileLabel}</div>\n )}\n <div className={classNames('table-cell-content', cardContentClassName, cell.contentClassName)}>\n {cell.content}\n </div>\n </div>\n ))}\n </>\n );\n\n return resolvedRowAnimationProps ? (\n <motion.div\n key={rowKeyValue}\n className={rowClassNames}\n onClick={interactiveRowProps.onClick}\n onKeyDown={interactiveRowProps.onKeyDown}\n role='row'\n tabIndex={interactiveRowProps.tabIndex}\n onAnimationStart={expanded ? () => setIsAnimating(true) : undefined}\n onAnimationComplete={expanded ? () => setIsAnimating(false) : undefined}\n {...resolvedRowAnimationProps}\n style={resolvedRowStyle}\n >\n {rowContent}\n </motion.div>\n ) : (\n <div\n key={rowKeyValue}\n className={rowClassNames}\n onClick={interactiveRowProps.onClick}\n onKeyDown={interactiveRowProps.onKeyDown}\n role='row'\n tabIndex={interactiveRowProps.tabIndex}\n >\n {rowContent}\n </div>\n );\n};\n\nexport default TableCard;\n"],"names":["expandedCardDuration","TableCard","props","active","disabled","expanded","selected","row","rowIndex","rowKeyValue","cells","cardRowClassName","cardCellClassName","cardLabelClassName","cardContentClassName","rowClassName","rowAnimationProps","isClickable","onActiveRowChange","onRowClick","onToggleRowSelection","showSelectionColumn","isAnimating","setIsAnimating","useState","shouldReduceMotion","useReducedMotion","interactiveRowProps","getInteractiveRowProps","clickedRow","clickedRowIndex","handleCellInteraction","event","defaultExpandedAnimationProps","useMemo","resolvedRowAnimationProps","motionStyle","resolvedRowStyle","rowClassNames","classNames","rowContent","jsxs","Fragment","jsx","Checkbox","cell","cellIndex","getHorizontalAlignClassName","getVerticalAlignClassName","resolveAriaColIndex","motion"],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- import { ReactNode } from 'react';
2
- import { TableColumnWithArea } from '../layout/useTableLayout';
3
- import { TableCellClassName, TableParsedFooter, TableParsedHeaderColumn, TableRowId, TableParsedRow, TableRowClassName, TableSortDirection } from '../Table.types';
4
- import { TableViewModel } from './tableViewModel.types';
5
- type BuildTableViewModelProps<RowType extends Record<string, unknown>> = {
6
- columnsWithAreas: TableColumnWithArea<RowType>[];
7
- resolvedHeaderColumns: TableParsedHeaderColumn<RowType>[];
8
- resolvedRows: TableParsedRow<RowType>[];
9
- resolvedFooter?: TableParsedFooter;
10
- rowKey?: keyof RowType | ((row: RowType, rowIndex: number) => string | number);
11
- rowClassName?: TableRowClassName<RowType>;
12
- cellClassName?: TableCellClassName<RowType>;
13
- activeRowId?: TableRowId;
14
- noRowsState: ReactNode;
15
- isClickable: boolean;
16
- isTableView: boolean;
17
- selectedRowIds?: TableRowId[];
18
- sortBy?: string | string[];
19
- sortDirection?: TableSortDirection;
20
- cardClasses: {
21
- rowClassName?: string;
22
- cellClassName?: string;
23
- labelClassName?: string;
24
- contentClassName?: string;
25
- };
26
- };
27
- export declare const buildTableViewModel: <RowType extends Record<string, unknown>>(props: BuildTableViewModelProps<RowType>) => TableViewModel<RowType>;
28
- export {};