@osdk/react-components 0.1.0 → 0.2.0-beta.10

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 (609) hide show
  1. package/CHANGELOG.md +98 -19
  2. package/README.md +56 -23
  3. package/build/browser/base-components/action-button/ActionButton.js +31 -0
  4. package/build/browser/base-components/action-button/ActionButton.js.map +1 -0
  5. package/build/browser/base-components/action-button/ActionButton.module.css +70 -0
  6. package/build/browser/base-components/action-button/ActionButton.module.css.js +8 -0
  7. package/build/browser/base-components/checkbox/Checkbox.js +27 -32
  8. package/build/browser/base-components/checkbox/Checkbox.module.css +79 -0
  9. package/build/browser/base-components/checkbox/Checkbox.module.css.js +7 -0
  10. package/build/browser/base-components/combobox/Combobox.js +124 -0
  11. package/build/browser/base-components/combobox/Combobox.js.map +1 -0
  12. package/build/browser/base-components/combobox/Combobox.module.css +177 -0
  13. package/build/browser/base-components/combobox/Combobox.module.css.js +16 -0
  14. package/build/browser/base-components/dialog/Dialog.js +52 -0
  15. package/build/browser/base-components/dialog/Dialog.js.map +1 -0
  16. package/build/browser/base-components/dialog/Dialog.module.css +101 -0
  17. package/build/browser/base-components/dialog/Dialog.module.css.js +13 -0
  18. package/build/browser/base-components/draggable-list/DraggableList.js +155 -0
  19. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -0
  20. package/build/browser/base-components/draggable-list/DraggableList.module.css +108 -0
  21. package/build/browser/base-components/draggable-list/DraggableList.module.css.js +11 -0
  22. package/build/browser/base-components/search-bar/SearchBar.js +44 -0
  23. package/build/browser/base-components/search-bar/SearchBar.js.map +1 -0
  24. package/build/browser/base-components/search-bar/SearchBar.module.css +53 -0
  25. package/build/browser/base-components/search-bar/SearchBar.module.css.js +8 -0
  26. package/build/browser/base-components/select/Select.js +89 -0
  27. package/build/browser/base-components/select/Select.js.map +1 -0
  28. package/build/browser/base-components/select/Select.module.css +138 -0
  29. package/build/browser/base-components/select/Select.module.css.js +11 -0
  30. package/build/browser/base-components/switch/Switch.js +33 -0
  31. package/build/browser/base-components/switch/Switch.js.map +1 -0
  32. package/build/browser/base-components/switch/Switch.module.css +91 -0
  33. package/build/browser/base-components/switch/Switch.module.css.js +7 -0
  34. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  35. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  36. package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
  37. package/build/browser/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
  38. package/build/browser/filter-list/__tests__/dateUtils.test.js +55 -0
  39. package/build/browser/filter-list/__tests__/dateUtils.test.js.map +1 -0
  40. package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
  41. package/build/browser/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
  42. package/build/browser/filter-list/__tests__/getFilterKey.test.js +53 -0
  43. package/build/browser/filter-list/__tests__/getFilterKey.test.js.map +1 -0
  44. package/build/browser/filter-list/__tests__/testUtils.js +203 -0
  45. package/build/browser/filter-list/__tests__/testUtils.js.map +1 -0
  46. package/build/browser/filter-list/base/FilterInput.js +542 -0
  47. package/build/browser/filter-list/base/FilterInput.js.map +1 -0
  48. package/build/browser/filter-list/base/FilterList.js +77 -0
  49. package/build/browser/filter-list/base/FilterList.js.map +1 -0
  50. package/build/browser/filter-list/base/FilterList.module.css +67 -0
  51. package/build/browser/filter-list/base/FilterList.module.css.js +8 -0
  52. package/build/browser/filter-list/base/FilterListContent.js +57 -0
  53. package/build/browser/filter-list/base/FilterListContent.js.map +1 -0
  54. package/build/browser/filter-list/base/FilterListContent.module.css +27 -0
  55. package/build/browser/filter-list/base/FilterListContent.module.css.js +7 -0
  56. package/build/browser/filter-list/base/FilterListHeader.js +58 -0
  57. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -0
  58. package/build/browser/filter-list/base/FilterListHeader.module.css +127 -0
  59. package/build/browser/filter-list/base/FilterListHeader.module.css.js +13 -0
  60. package/build/browser/filter-list/base/FilterListItem.js +75 -0
  61. package/build/browser/filter-list/base/FilterListItem.js.map +1 -0
  62. package/build/browser/filter-list/base/FilterListItem.module.css +38 -0
  63. package/build/browser/filter-list/base/FilterListItem.module.css.js +9 -0
  64. package/build/browser/filter-list/base/index.js +22 -0
  65. package/build/browser/filter-list/base/index.js.map +1 -0
  66. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +75 -0
  67. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
  68. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
  69. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +9 -0
  70. package/build/browser/filter-list/base/inputs/ContainsTextInput.js +85 -0
  71. package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
  72. package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
  73. package/build/browser/filter-list/base/inputs/ContainsTextInput.module.css.js +10 -0
  74. package/build/browser/filter-list/base/inputs/DateRangeInput.js +37 -0
  75. package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -0
  76. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
  77. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
  78. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
  79. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.module.css.js +6 -0
  80. package/build/browser/filter-list/base/inputs/ListogramInput.js +98 -0
  81. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -0
  82. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +88 -0
  83. package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +12 -0
  84. package/build/browser/filter-list/base/inputs/MultiDateInput.js +82 -0
  85. package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -0
  86. package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +54 -0
  87. package/build/browser/filter-list/base/inputs/MultiDateInput.module.css.js +9 -0
  88. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +100 -0
  89. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
  90. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
  91. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +9 -0
  92. package/build/browser/filter-list/base/inputs/NullValueWrapper.js +76 -0
  93. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
  94. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
  95. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css.js +10 -0
  96. package/build/browser/filter-list/base/inputs/NumberRangeInput.js +48 -0
  97. package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
  98. package/build/browser/filter-list/base/inputs/RangeInput.js +187 -0
  99. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -0
  100. package/build/browser/filter-list/base/inputs/RangeInput.module.css +81 -0
  101. package/build/browser/filter-list/base/inputs/RangeInput.module.css.js +13 -0
  102. package/build/browser/filter-list/base/inputs/SingleDateInput.js +61 -0
  103. package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -0
  104. package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +63 -0
  105. package/build/browser/filter-list/base/inputs/SingleDateInput.module.css.js +9 -0
  106. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +95 -0
  107. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
  108. package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
  109. package/build/browser/filter-list/base/inputs/SingleSelectInput.module.css.js +8 -0
  110. package/build/browser/filter-list/base/inputs/TextTagsInput.js +141 -0
  111. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -0
  112. package/build/browser/filter-list/base/inputs/TextTagsInput.module.css +25 -0
  113. package/build/browser/filter-list/base/inputs/TextTagsInput.module.css.js +7 -0
  114. package/build/browser/filter-list/base/inputs/TimelineInput.js +74 -0
  115. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -0
  116. package/build/browser/filter-list/base/inputs/TimelineInput.module.css +73 -0
  117. package/build/browser/filter-list/base/inputs/TimelineInput.module.css.js +10 -0
  118. package/build/browser/filter-list/base/inputs/ToggleInput.js +43 -0
  119. package/build/browser/filter-list/base/inputs/ToggleInput.js.map +1 -0
  120. package/build/browser/filter-list/base/inputs/ToggleInput.module.css +34 -0
  121. package/build/browser/filter-list/base/inputs/ToggleInput.module.css.js +8 -0
  122. package/build/browser/filter-list/base/inputs/createHistogramBuckets.js +53 -0
  123. package/build/browser/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
  124. package/build/browser/filter-list/base/inputs/dateUtils.js +57 -0
  125. package/build/browser/filter-list/base/inputs/dateUtils.js.map +1 -0
  126. package/build/browser/filter-list/base/inputs/index.js +25 -0
  127. package/build/browser/filter-list/base/inputs/index.js.map +1 -0
  128. package/build/browser/filter-list/base/inputs/shared.module.css +79 -0
  129. package/build/browser/filter-list/base/inputs/shared.module.css.js +11 -0
  130. package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
  131. package/build/browser/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
  132. package/build/browser/filter-list/hooks/useFilterListState.js +119 -0
  133. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -0
  134. package/build/browser/filter-list/hooks/usePropertyAggregation.js +92 -0
  135. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -0
  136. package/build/browser/filter-list/types/AddFilterMenuTypes.js +2 -0
  137. package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +1 -0
  138. package/build/browser/filter-list/types/CustomRendererTypes.js +2 -0
  139. package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -0
  140. package/build/browser/filter-list/types/FilterPanelTypes.js +2 -0
  141. package/build/browser/filter-list/types/FilterPanelTypes.js.map +1 -0
  142. package/build/browser/filter-list/types/KeywordSearchTypes.js +2 -0
  143. package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -0
  144. package/build/browser/filter-list/types/LinkedFilterTypes.js +2 -0
  145. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -0
  146. package/build/browser/filter-list/types/index.js +22 -0
  147. package/build/browser/filter-list/types/index.js.map +1 -0
  148. package/build/browser/filter-list/utils/aggregationHelpers.js +44 -0
  149. package/build/browser/filter-list/utils/aggregationHelpers.js.map +1 -0
  150. package/build/browser/filter-list/utils/assertUnreachable.js +25 -0
  151. package/build/browser/filter-list/utils/assertUnreachable.js.map +1 -0
  152. package/build/browser/filter-list/utils/coerceFilterValue.js +33 -0
  153. package/build/browser/filter-list/utils/coerceFilterValue.js.map +1 -0
  154. package/build/browser/filter-list/utils/filterStateToWhereClause.js +337 -0
  155. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -0
  156. package/build/browser/filter-list/utils/filterValues.js +55 -0
  157. package/build/browser/filter-list/utils/filterValues.js.map +1 -0
  158. package/build/browser/filter-list/utils/getFilterKey.js +34 -0
  159. package/build/browser/filter-list/utils/getFilterKey.js.map +1 -0
  160. package/build/browser/object-table/CellContextMenu.js +23 -20
  161. package/build/browser/object-table/CellContextMenu.module.css +20 -0
  162. package/build/browser/object-table/CellContextMenu.module.css.js +6 -0
  163. package/build/browser/object-table/ColumnConfigDialog.js +259 -0
  164. package/build/browser/object-table/ColumnConfigDialog.js.map +1 -0
  165. package/build/browser/object-table/ColumnConfigDialog.module.css +247 -0
  166. package/build/browser/object-table/ColumnConfigDialog.module.css.js +29 -0
  167. package/build/browser/object-table/DefaultCellRenderer.js +43 -0
  168. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
  169. package/build/browser/object-table/EditableCell.js +91 -0
  170. package/build/browser/object-table/EditableCell.js.map +1 -0
  171. package/build/browser/object-table/EditableCell.module.css +3 -0
  172. package/build/browser/object-table/EditableCell.module.css.js +6 -0
  173. package/build/browser/object-table/LoadingCell.js +24 -29
  174. package/build/browser/object-table/LoadingCell.module.css +48 -0
  175. package/build/browser/object-table/LoadingCell.module.css.js +8 -0
  176. package/build/browser/object-table/LoadingRow.js +24 -50
  177. package/build/browser/object-table/LoadingStateTable.js +49 -343
  178. package/build/browser/object-table/LoadingStateTable.js.map +1 -1
  179. package/build/browser/object-table/MultiColumnSortDialog.js +178 -0
  180. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -0
  181. package/build/browser/object-table/MultiColumnSortDialog.module.css +195 -0
  182. package/build/browser/object-table/MultiColumnSortDialog.module.css.js +22 -0
  183. package/build/browser/object-table/NonIdealState.js +23 -20
  184. package/build/browser/object-table/NonIdealState.module.css +27 -0
  185. package/build/browser/object-table/NonIdealState.module.css.js +7 -0
  186. package/build/browser/object-table/ObjectTable.js +74 -15
  187. package/build/browser/object-table/ObjectTable.js.map +1 -1
  188. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  189. package/build/browser/object-table/SelectionCells.js +15 -4
  190. package/build/browser/object-table/SelectionCells.js.map +1 -1
  191. package/build/browser/object-table/SortableItemsList.js +35 -0
  192. package/build/browser/object-table/SortableItemsList.js.map +1 -0
  193. package/build/browser/object-table/Table.js +70 -935
  194. package/build/browser/object-table/Table.js.map +1 -1
  195. package/build/browser/object-table/Table.module.css +45 -0
  196. package/build/browser/object-table/Table.module.css.js +8 -0
  197. package/build/browser/object-table/TableBody.js +36 -260
  198. package/build/browser/object-table/TableBody.module.css +22 -0
  199. package/build/browser/object-table/TableBody.module.css.js +6 -0
  200. package/build/browser/object-table/TableCell.js +31 -111
  201. package/build/browser/object-table/TableCell.module.css +83 -0
  202. package/build/browser/object-table/TableCell.module.css.js +8 -0
  203. package/build/browser/object-table/TableHeader.js +126 -216
  204. package/build/browser/object-table/TableHeader.js.map +1 -1
  205. package/build/browser/object-table/TableHeader.module.css +108 -0
  206. package/build/browser/object-table/TableHeader.module.css.js +10 -0
  207. package/build/browser/object-table/TableHeaderContent.js +21 -18
  208. package/build/browser/object-table/TableHeaderContent.module.css +30 -0
  209. package/build/browser/object-table/TableHeaderContent.module.css.js +6 -0
  210. package/build/browser/object-table/TableHeaderWithPopover.js +110 -93
  211. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
  212. package/build/browser/object-table/TableHeaderWithPopover.module.css +141 -0
  213. package/build/browser/object-table/TableHeaderWithPopover.module.css.js +17 -0
  214. package/build/browser/object-table/TableRow.js +26 -144
  215. package/build/browser/object-table/TableRow.module.css +62 -0
  216. package/build/browser/object-table/TableRow.module.css.js +6 -0
  217. package/build/browser/object-table/__tests__/useEditableTable.test.js +197 -0
  218. package/build/browser/object-table/__tests__/useEditableTable.test.js.map +1 -0
  219. package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
  220. package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
  221. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
  222. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
  223. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
  224. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  225. package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
  226. package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
  227. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
  228. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  229. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
  230. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
  231. package/build/browser/object-table/hooks/useColumnDefs.js +16 -3
  232. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  233. package/build/browser/object-table/hooks/useColumnResize.js +45 -0
  234. package/build/browser/object-table/hooks/useColumnResize.js.map +1 -0
  235. package/build/browser/object-table/hooks/useColumnVisibility.js +52 -20
  236. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  237. package/build/browser/object-table/hooks/useEditableTable.js +57 -0
  238. package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
  239. package/build/browser/object-table/hooks/useObjectTableData.js +42 -7
  240. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  241. package/build/browser/object-table/hooks/useRowSelection.js +31 -10
  242. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  243. package/build/browser/object-table/hooks/useSelectionColumn.js +15 -6
  244. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  245. package/build/browser/object-table/utils/getCellId.js +27 -0
  246. package/build/browser/object-table/utils/getCellId.js.map +1 -0
  247. package/build/browser/object-table/utils/types.js +2 -0
  248. package/build/browser/object-table/utils/types.js.map +1 -0
  249. package/build/browser/public/experimental.js +2 -0
  250. package/build/browser/public/experimental.js.map +1 -1
  251. package/build/browser/shared/ErrorBoundary.js +62 -0
  252. package/build/browser/shared/ErrorBoundary.js.map +1 -0
  253. package/build/browser/shared/ErrorBoundary.module.css +55 -0
  254. package/build/browser/shared/ErrorBoundary.module.css.js +8 -0
  255. package/build/browser/styles.css +3073 -0
  256. package/build/cjs/public/experimental.cjs +4026 -240
  257. package/build/cjs/public/experimental.cjs.map +1 -1
  258. package/build/cjs/public/experimental.css +1834 -154
  259. package/build/cjs/public/experimental.css.map +1 -1
  260. package/build/cjs/public/experimental.d.cts +453 -50
  261. package/build/esm/base-components/action-button/ActionButton.js +31 -0
  262. package/build/esm/base-components/action-button/ActionButton.js.map +1 -0
  263. package/build/esm/base-components/action-button/ActionButton.module.css +70 -0
  264. package/build/esm/base-components/checkbox/Checkbox.module.css +1 -1
  265. package/build/esm/base-components/combobox/Combobox.js +124 -0
  266. package/build/esm/base-components/combobox/Combobox.js.map +1 -0
  267. package/build/esm/base-components/combobox/Combobox.module.css +177 -0
  268. package/build/esm/base-components/dialog/Dialog.js +52 -0
  269. package/build/esm/base-components/dialog/Dialog.js.map +1 -0
  270. package/build/esm/base-components/dialog/Dialog.module.css +101 -0
  271. package/build/esm/base-components/draggable-list/DraggableList.js +155 -0
  272. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -0
  273. package/build/esm/base-components/draggable-list/DraggableList.module.css +108 -0
  274. package/build/esm/base-components/search-bar/SearchBar.js +44 -0
  275. package/build/esm/base-components/search-bar/SearchBar.js.map +1 -0
  276. package/build/esm/base-components/search-bar/SearchBar.module.css +53 -0
  277. package/build/esm/base-components/select/Select.js +89 -0
  278. package/build/esm/base-components/select/Select.js.map +1 -0
  279. package/build/esm/base-components/select/Select.module.css +138 -0
  280. package/build/esm/base-components/switch/Switch.js +33 -0
  281. package/build/esm/base-components/switch/Switch.js.map +1 -0
  282. package/build/esm/base-components/switch/Switch.module.css +91 -0
  283. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  284. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  285. package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
  286. package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
  287. package/build/esm/filter-list/__tests__/dateUtils.test.js +55 -0
  288. package/build/esm/filter-list/__tests__/dateUtils.test.js.map +1 -0
  289. package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
  290. package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
  291. package/build/esm/filter-list/__tests__/getFilterKey.test.js +53 -0
  292. package/build/esm/filter-list/__tests__/getFilterKey.test.js.map +1 -0
  293. package/build/esm/filter-list/__tests__/testUtils.js +203 -0
  294. package/build/esm/filter-list/__tests__/testUtils.js.map +1 -0
  295. package/build/esm/filter-list/base/FilterInput.js +542 -0
  296. package/build/esm/filter-list/base/FilterInput.js.map +1 -0
  297. package/build/esm/filter-list/base/FilterList.js +77 -0
  298. package/build/esm/filter-list/base/FilterList.js.map +1 -0
  299. package/build/esm/filter-list/base/FilterList.module.css +67 -0
  300. package/build/esm/filter-list/base/FilterListContent.js +57 -0
  301. package/build/esm/filter-list/base/FilterListContent.js.map +1 -0
  302. package/build/esm/filter-list/base/FilterListContent.module.css +27 -0
  303. package/build/esm/filter-list/base/FilterListHeader.js +58 -0
  304. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -0
  305. package/build/esm/filter-list/base/FilterListHeader.module.css +127 -0
  306. package/build/esm/filter-list/base/FilterListItem.js +75 -0
  307. package/build/esm/filter-list/base/FilterListItem.js.map +1 -0
  308. package/build/esm/filter-list/base/FilterListItem.module.css +38 -0
  309. package/build/esm/filter-list/base/index.js +22 -0
  310. package/build/esm/filter-list/base/index.js.map +1 -0
  311. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +75 -0
  312. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
  313. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
  314. package/build/esm/filter-list/base/inputs/ContainsTextInput.js +85 -0
  315. package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
  316. package/build/esm/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
  317. package/build/esm/filter-list/base/inputs/DateRangeInput.js +37 -0
  318. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -0
  319. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
  320. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
  321. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
  322. package/build/esm/filter-list/base/inputs/ListogramInput.js +98 -0
  323. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -0
  324. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +88 -0
  325. package/build/esm/filter-list/base/inputs/MultiDateInput.js +82 -0
  326. package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -0
  327. package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +54 -0
  328. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +100 -0
  329. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
  330. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
  331. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +76 -0
  332. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
  333. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
  334. package/build/esm/filter-list/base/inputs/NumberRangeInput.js +48 -0
  335. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
  336. package/build/esm/filter-list/base/inputs/RangeInput.js +187 -0
  337. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -0
  338. package/build/esm/filter-list/base/inputs/RangeInput.module.css +81 -0
  339. package/build/esm/filter-list/base/inputs/SingleDateInput.js +61 -0
  340. package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -0
  341. package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +63 -0
  342. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +95 -0
  343. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
  344. package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
  345. package/build/esm/filter-list/base/inputs/TextTagsInput.js +141 -0
  346. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -0
  347. package/build/esm/filter-list/base/inputs/TextTagsInput.module.css +25 -0
  348. package/build/esm/filter-list/base/inputs/TimelineInput.js +74 -0
  349. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -0
  350. package/build/esm/filter-list/base/inputs/TimelineInput.module.css +73 -0
  351. package/build/esm/filter-list/base/inputs/ToggleInput.js +43 -0
  352. package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -0
  353. package/build/esm/filter-list/base/inputs/ToggleInput.module.css +34 -0
  354. package/build/esm/filter-list/base/inputs/createHistogramBuckets.js +53 -0
  355. package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
  356. package/build/esm/filter-list/base/inputs/dateUtils.js +57 -0
  357. package/build/esm/filter-list/base/inputs/dateUtils.js.map +1 -0
  358. package/build/esm/filter-list/base/inputs/index.js +25 -0
  359. package/build/esm/filter-list/base/inputs/index.js.map +1 -0
  360. package/build/esm/filter-list/base/inputs/shared.module.css +79 -0
  361. package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
  362. package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
  363. package/build/esm/filter-list/hooks/useFilterListState.js +119 -0
  364. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -0
  365. package/build/esm/filter-list/hooks/usePropertyAggregation.js +92 -0
  366. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -0
  367. package/build/esm/filter-list/types/AddFilterMenuTypes.js +2 -0
  368. package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +1 -0
  369. package/build/esm/filter-list/types/CustomRendererTypes.js +2 -0
  370. package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -0
  371. package/build/esm/filter-list/types/FilterPanelTypes.js +2 -0
  372. package/build/esm/filter-list/types/FilterPanelTypes.js.map +1 -0
  373. package/build/esm/filter-list/types/KeywordSearchTypes.js +2 -0
  374. package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -0
  375. package/build/esm/filter-list/types/LinkedFilterTypes.js +2 -0
  376. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -0
  377. package/build/esm/filter-list/types/index.js +22 -0
  378. package/build/esm/filter-list/types/index.js.map +1 -0
  379. package/build/esm/filter-list/utils/aggregationHelpers.js +44 -0
  380. package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -0
  381. package/build/esm/filter-list/utils/assertUnreachable.js +25 -0
  382. package/build/esm/filter-list/utils/assertUnreachable.js.map +1 -0
  383. package/build/esm/filter-list/utils/coerceFilterValue.js +33 -0
  384. package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -0
  385. package/build/esm/filter-list/utils/filterStateToWhereClause.js +337 -0
  386. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -0
  387. package/build/esm/filter-list/utils/filterValues.js +55 -0
  388. package/build/esm/filter-list/utils/filterValues.js.map +1 -0
  389. package/build/esm/filter-list/utils/getFilterKey.js +34 -0
  390. package/build/esm/filter-list/utils/getFilterKey.js.map +1 -0
  391. package/build/esm/object-table/ColumnConfigDialog.js +259 -0
  392. package/build/esm/object-table/ColumnConfigDialog.js.map +1 -0
  393. package/build/esm/object-table/ColumnConfigDialog.module.css +247 -0
  394. package/build/esm/object-table/DefaultCellRenderer.js +43 -0
  395. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
  396. package/build/esm/object-table/EditableCell.js +91 -0
  397. package/build/esm/object-table/EditableCell.js.map +1 -0
  398. package/build/esm/object-table/EditableCell.module.css +3 -0
  399. package/build/esm/object-table/LoadingStateTable.js +4 -4
  400. package/build/esm/object-table/LoadingStateTable.js.map +1 -1
  401. package/build/esm/object-table/MultiColumnSortDialog.js +178 -0
  402. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -0
  403. package/build/esm/object-table/MultiColumnSortDialog.module.css +195 -0
  404. package/build/esm/object-table/NonIdealState.module.css +2 -3
  405. package/build/esm/object-table/ObjectTable.js +74 -15
  406. package/build/esm/object-table/ObjectTable.js.map +1 -1
  407. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  408. package/build/esm/object-table/SelectionCells.js +15 -4
  409. package/build/esm/object-table/SelectionCells.js.map +1 -1
  410. package/build/esm/object-table/SortableItemsList.js +35 -0
  411. package/build/esm/object-table/SortableItemsList.js.map +1 -0
  412. package/build/esm/object-table/Table.js +25 -8
  413. package/build/esm/object-table/Table.js.map +1 -1
  414. package/build/esm/object-table/Table.module.css +26 -3
  415. package/build/esm/object-table/TableBody.module.css +2 -0
  416. package/build/esm/object-table/TableCell.module.css +22 -1
  417. package/build/esm/object-table/TableHeader.js +93 -6
  418. package/build/esm/object-table/TableHeader.js.map +1 -1
  419. package/build/esm/object-table/TableHeader.module.css +9 -2
  420. package/build/esm/object-table/TableHeaderWithPopover.js +53 -22
  421. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
  422. package/build/esm/object-table/TableHeaderWithPopover.module.css +56 -25
  423. package/build/esm/object-table/TableRow.module.css +2 -0
  424. package/build/esm/object-table/__tests__/useEditableTable.test.js +197 -0
  425. package/build/esm/object-table/__tests__/useEditableTable.test.js.map +1 -0
  426. package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
  427. package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
  428. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
  429. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
  430. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
  431. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  432. package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
  433. package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
  434. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
  435. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  436. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
  437. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
  438. package/build/esm/object-table/hooks/useColumnDefs.js +16 -3
  439. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  440. package/build/esm/object-table/hooks/useColumnResize.js +45 -0
  441. package/build/esm/object-table/hooks/useColumnResize.js.map +1 -0
  442. package/build/esm/object-table/hooks/useColumnVisibility.js +52 -20
  443. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  444. package/build/esm/object-table/hooks/useEditableTable.js +57 -0
  445. package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
  446. package/build/esm/object-table/hooks/useObjectTableData.js +42 -7
  447. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  448. package/build/esm/object-table/hooks/useRowSelection.js +31 -10
  449. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  450. package/build/esm/object-table/hooks/useSelectionColumn.js +15 -6
  451. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  452. package/build/esm/object-table/utils/getCellId.js +27 -0
  453. package/build/esm/object-table/utils/getCellId.js.map +1 -0
  454. package/build/esm/object-table/utils/types.js +2 -0
  455. package/build/esm/object-table/utils/types.js.map +1 -0
  456. package/build/esm/public/experimental.js +2 -0
  457. package/build/esm/public/experimental.js.map +1 -1
  458. package/build/esm/shared/ErrorBoundary.js +62 -0
  459. package/build/esm/shared/ErrorBoundary.js.map +1 -0
  460. package/build/esm/shared/ErrorBoundary.module.css +55 -0
  461. package/build/types/base-components/action-button/ActionButton.d.ts +5 -0
  462. package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -0
  463. package/build/types/base-components/combobox/Combobox.d.ts +52 -0
  464. package/build/types/base-components/combobox/Combobox.d.ts.map +1 -0
  465. package/build/types/base-components/dialog/Dialog.d.ts +10 -0
  466. package/build/types/base-components/dialog/Dialog.d.ts.map +1 -0
  467. package/build/types/base-components/draggable-list/DraggableList.d.ts +17 -0
  468. package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -0
  469. package/build/types/base-components/search-bar/SearchBar.d.ts +11 -0
  470. package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -0
  471. package/build/types/base-components/select/Select.d.ts +34 -0
  472. package/build/types/base-components/select/Select.d.ts.map +1 -0
  473. package/build/types/base-components/switch/Switch.d.ts +10 -0
  474. package/build/types/base-components/switch/Switch.d.ts.map +1 -0
  475. package/build/types/filter-list/FilterListApi.d.ts +62 -17
  476. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  477. package/build/types/filter-list/FilterListItemApi.d.ts +101 -53
  478. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  479. package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts +1 -0
  480. package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts.map +1 -0
  481. package/build/types/filter-list/__tests__/dateUtils.test.d.ts +1 -0
  482. package/build/types/filter-list/__tests__/dateUtils.test.d.ts.map +1 -0
  483. package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts +1 -0
  484. package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts.map +1 -0
  485. package/build/types/filter-list/__tests__/getFilterKey.test.d.ts +1 -0
  486. package/build/types/filter-list/__tests__/getFilterKey.test.d.ts.map +1 -0
  487. package/build/types/filter-list/__tests__/testUtils.d.ts +65 -0
  488. package/build/types/filter-list/__tests__/testUtils.d.ts.map +1 -0
  489. package/build/types/filter-list/base/FilterInput.d.ts +15 -0
  490. package/build/types/filter-list/base/FilterInput.d.ts.map +1 -0
  491. package/build/types/filter-list/base/FilterList.d.ts +4 -0
  492. package/build/types/filter-list/base/FilterList.d.ts.map +1 -0
  493. package/build/types/filter-list/base/FilterListContent.d.ts +16 -0
  494. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -0
  495. package/build/types/filter-list/base/FilterListHeader.d.ts +14 -0
  496. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -0
  497. package/build/types/filter-list/base/FilterListItem.d.ts +18 -0
  498. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -0
  499. package/build/types/filter-list/base/index.d.ts +5 -0
  500. package/build/types/filter-list/base/index.d.ts.map +1 -0
  501. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +21 -0
  502. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -0
  503. package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts +13 -0
  504. package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -0
  505. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +22 -0
  506. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -0
  507. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts +21 -0
  508. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +1 -0
  509. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +22 -0
  510. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -0
  511. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts +12 -0
  512. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -0
  513. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +24 -0
  514. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -0
  515. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +21 -0
  516. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -0
  517. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +22 -0
  518. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -0
  519. package/build/types/filter-list/base/inputs/RangeInput.d.ts +37 -0
  520. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -0
  521. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +13 -0
  522. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -0
  523. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +24 -0
  524. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -0
  525. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +24 -0
  526. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -0
  527. package/build/types/filter-list/base/inputs/TimelineInput.d.ts +11 -0
  528. package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -0
  529. package/build/types/filter-list/base/inputs/ToggleInput.d.ts +10 -0
  530. package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -0
  531. package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts +16 -0
  532. package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -0
  533. package/build/types/filter-list/base/inputs/dateUtils.d.ts +17 -0
  534. package/build/types/filter-list/base/inputs/dateUtils.d.ts.map +1 -0
  535. package/build/types/filter-list/base/inputs/index.d.ts +8 -0
  536. package/build/types/filter-list/base/inputs/index.d.ts.map +1 -0
  537. package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts +1 -0
  538. package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts.map +1 -0
  539. package/build/types/filter-list/hooks/useFilterListState.d.ts +11 -0
  540. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -0
  541. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +20 -0
  542. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -0
  543. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +56 -0
  544. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +1 -0
  545. package/build/types/filter-list/types/CustomRendererTypes.d.ts +76 -0
  546. package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -0
  547. package/build/types/filter-list/types/FilterPanelTypes.d.ts +18 -0
  548. package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +1 -0
  549. package/build/types/filter-list/types/KeywordSearchTypes.d.ts +56 -0
  550. package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -0
  551. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +89 -0
  552. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -0
  553. package/build/types/filter-list/types/index.d.ts +5 -0
  554. package/build/types/filter-list/types/index.d.ts.map +1 -0
  555. package/build/types/filter-list/utils/aggregationHelpers.d.ts +9 -0
  556. package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -0
  557. package/build/types/filter-list/utils/assertUnreachable.d.ts +6 -0
  558. package/build/types/filter-list/utils/assertUnreachable.d.ts.map +1 -0
  559. package/build/types/filter-list/utils/coerceFilterValue.d.ts +11 -0
  560. package/build/types/filter-list/utils/coerceFilterValue.d.ts.map +1 -0
  561. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +16 -0
  562. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -0
  563. package/build/types/filter-list/utils/filterValues.d.ts +5 -0
  564. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -0
  565. package/build/types/filter-list/utils/getFilterKey.d.ts +3 -0
  566. package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -0
  567. package/build/types/object-table/ColumnConfigDialog.d.ts +18 -0
  568. package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -0
  569. package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
  570. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
  571. package/build/types/object-table/EditableCell.d.ts +10 -0
  572. package/build/types/object-table/EditableCell.d.ts.map +1 -0
  573. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
  574. package/build/types/object-table/MultiColumnSortDialog.d.ts +15 -0
  575. package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -0
  576. package/build/types/object-table/ObjectTable.d.ts +1 -1
  577. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  578. package/build/types/object-table/ObjectTableApi.d.ts +79 -8
  579. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  580. package/build/types/object-table/SortableItemsList.d.ts +13 -0
  581. package/build/types/object-table/SortableItemsList.d.ts.map +1 -0
  582. package/build/types/object-table/Table.d.ts +26 -1
  583. package/build/types/object-table/Table.d.ts.map +1 -1
  584. package/build/types/object-table/TableHeader.d.ts +3 -1
  585. package/build/types/object-table/TableHeader.d.ts.map +1 -1
  586. package/build/types/object-table/TableHeaderWithPopover.d.ts +30 -6
  587. package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
  588. package/build/types/object-table/__tests__/useEditableTable.test.d.ts +1 -0
  589. package/build/types/object-table/__tests__/useEditableTable.test.d.ts.map +1 -0
  590. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  591. package/build/types/object-table/hooks/useColumnResize.d.ts +10 -0
  592. package/build/types/object-table/hooks/useColumnResize.d.ts.map +1 -0
  593. package/build/types/object-table/hooks/useColumnVisibility.d.ts +18 -7
  594. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  595. package/build/types/object-table/hooks/useEditableTable.d.ts +22 -0
  596. package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
  597. package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -5
  598. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  599. package/build/types/object-table/hooks/useRowSelection.d.ts +5 -4
  600. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  601. package/build/types/object-table/utils/getCellId.d.ts +3 -0
  602. package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
  603. package/build/types/object-table/utils/types.d.ts +14 -0
  604. package/build/types/object-table/utils/types.d.ts.map +1 -0
  605. package/build/types/public/experimental.d.ts +6 -2
  606. package/build/types/public/experimental.d.ts.map +1 -1
  607. package/build/types/shared/ErrorBoundary.d.ts +19 -0
  608. package/build/types/shared/ErrorBoundary.d.ts.map +1 -0
  609. package/package.json +17 -9
@@ -14,165 +14,187 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- import { renderHook, waitFor } from "@testing-library/react";
18
- import { describe, expect, it } from "vitest";
17
+ import { act, renderHook } from "@testing-library/react";
18
+ import { describe, expect, it, vi } from "vitest";
19
+ import { SELECTION_COLUMN_ID } from "../../utils/constants.js";
19
20
  import { useColumnVisibility } from "../useColumnVisibility.js";
20
21
  const TestObjectType = {
21
22
  type: "object",
22
23
  apiName: "TestObject"
23
24
  };
25
+ // Helper to create mock ColumnDef objects that mirror what useColumnDefs would produce
26
+ function createMockColumn(id, isVisible) {
27
+ return {
28
+ id,
29
+ meta: isVisible !== undefined ? {
30
+ isVisible
31
+ } : undefined
32
+ };
33
+ }
24
34
  describe(useColumnVisibility, () => {
25
- it("returns undefined columnVisibility when no columnDefinitions provided", () => {
26
- const {
27
- result
28
- } = renderHook(() => useColumnVisibility({
29
- columnDefinitions: undefined
30
- }));
31
- expect(result.current).toBeUndefined();
32
- });
33
- it("returns empty columnVisibility when columnDefinitions have no isVisible properties", () => {
34
- const columnDefinitions = [{
35
- locator: {
36
- type: "property",
37
- id: "name"
38
- }
39
- }, {
40
- locator: {
41
- type: "property",
42
- id: "email"
43
- }
44
- }];
45
- const {
46
- result
47
- } = renderHook(() => useColumnVisibility({
48
- columnDefinitions
49
- }));
50
- expect(result.current).toEqual({});
51
- });
52
- it("handles mixed column types with different visibility states", async () => {
53
- const columnDefinitions = [{
54
- locator: {
55
- type: "property",
56
- id: "name"
57
- },
58
- isVisible: true
59
- }, {
60
- locator: {
61
- type: "function",
62
- id: "myFunction"
63
- },
64
- isVisible: false
65
- }, {
66
- locator: {
67
- type: "rdp",
68
- id: "myRdp",
69
- creator: () => ({})
70
- },
71
- isVisible: true
72
- }, {
73
- locator: {
74
- type: "property",
75
- id: "email"
76
- }
77
- }];
78
- const {
79
- result
80
- } = renderHook(() => useColumnVisibility({
81
- columnDefinitions
82
- }));
83
- await waitFor(() => {
84
- expect(result.current).toEqual({
35
+ describe("column visibility", () => {
36
+ it("returns empty columnVisibility when no columnDefinitions provided", () => {
37
+ const allColumns = [];
38
+ const {
39
+ result
40
+ } = renderHook(() => useColumnVisibility({
41
+ allColumns
42
+ }));
43
+ expect(result.current.columnVisibility).toEqual({});
44
+ });
45
+ it("initializes all columns as visible by default", () => {
46
+ const allColumns = [createMockColumn("name"), createMockColumn("email")];
47
+ const {
48
+ result
49
+ } = renderHook(() => useColumnVisibility({
50
+ allColumns
51
+ }));
52
+ expect(result.current.columnVisibility).toEqual({
85
53
  name: true,
86
- myFunction: false,
87
- myRdp: true
54
+ email: true
88
55
  });
89
56
  });
90
- });
91
- it("updates columnVisibility when columnDefinitions change", async () => {
92
- const {
93
- result,
94
- rerender
95
- } = renderHook(({
96
- columnDefinitions
97
- }) => useColumnVisibility({
98
- columnDefinitions
99
- }), {
100
- initialProps: {
101
- columnDefinitions: [{
102
- locator: {
103
- type: "property",
104
- id: "name"
105
- },
106
- isVisible: true
107
- }]
108
- }
57
+ it("handles mixed column types with different visibility states", () => {
58
+ const allColumns = [createMockColumn("name", true), createMockColumn("myFunction", false), createMockColumn("myRdp", true), createMockColumn("email")];
59
+ const {
60
+ result
61
+ } = renderHook(() => useColumnVisibility({
62
+ allColumns
63
+ }));
64
+ expect(result.current.columnVisibility).toEqual({
65
+ name: true,
66
+ myFunction: false,
67
+ myRdp: true,
68
+ email: true
69
+ });
109
70
  });
110
- await waitFor(() => {
111
- expect(result.current).toEqual({
71
+ it("updates columnVisibility when columnDefinitions change", () => {
72
+ const initialColumns = [createMockColumn("name", true)];
73
+ const {
74
+ result,
75
+ rerender
76
+ } = renderHook(({
77
+ allColumns
78
+ }) => useColumnVisibility({
79
+ allColumns
80
+ }), {
81
+ initialProps: {
82
+ allColumns: initialColumns
83
+ }
84
+ });
85
+ expect(result.current.columnVisibility).toEqual({
112
86
  name: true
113
87
  });
114
- });
115
- rerender({
116
- columnDefinitions: [{
117
- locator: {
118
- type: "property",
119
- id: "name"
120
- },
121
- isVisible: false
122
- }, {
123
- locator: {
124
- type: "property",
125
- id: "email"
126
- },
127
- isVisible: true
128
- }]
129
- });
130
- await waitFor(() => {
131
- expect(result.current).toEqual({
88
+ const updatedColumns = [createMockColumn("name", false), createMockColumn("email", true)];
89
+ rerender({
90
+ allColumns: updatedColumns
91
+ });
92
+ expect(result.current.columnVisibility).toEqual({
132
93
  name: false,
133
94
  email: true
134
95
  });
135
96
  });
136
97
  });
137
- it("only includes columns with explicit isVisible in the visibility state", async () => {
138
- const columnDefinitions = [{
139
- locator: {
140
- type: "property",
141
- id: "name"
142
- },
143
- isVisible: true
144
- }, {
145
- locator: {
146
- type: "property",
147
- id: "email"
148
- }
149
- }, {
150
- locator: {
151
- type: "property",
152
- id: "age"
153
- },
154
- isVisible: false
155
- }, {
156
- locator: {
157
- type: "property",
158
- id: "id"
159
- }
160
- }];
161
- const {
162
- result
163
- } = renderHook(() => useColumnVisibility({
164
- columnDefinitions
165
- }));
166
- await waitFor(() => {
167
- expect(result.current).toEqual({
98
+ describe("onColumnVisibilityChanged callback", () => {
99
+ it("calls onColumnVisibilityChanged when visibility changed", () => {
100
+ const onColumnVisibilityChanged = vi.fn();
101
+ const allColumns = [createMockColumn("name", true), createMockColumn("email", true)];
102
+ const {
103
+ result
104
+ } = renderHook(() => useColumnVisibility({
105
+ allColumns,
106
+ onColumnVisibilityChanged
107
+ }));
108
+ act(() => {
109
+ result.current.onColumnVisibilityChange(prev => ({
110
+ ...prev,
111
+ email: false
112
+ }));
113
+ });
114
+ expect(result.current.columnVisibility).toEqual({
168
115
  name: true,
169
- age: false
116
+ email: false
170
117
  });
118
+ expect(onColumnVisibilityChanged).toHaveBeenCalledWith([{
119
+ columnId: "name",
120
+ isVisible: true
121
+ }, {
122
+ columnId: "email",
123
+ isVisible: false
124
+ }]);
171
125
  });
126
+ it("does not call callback when callback is not provided", () => {
127
+ const allColumns = [createMockColumn("name", true)];
128
+ const {
129
+ result
130
+ } = renderHook(() => useColumnVisibility({
131
+ allColumns
132
+ }));
172
133
 
173
- // Verify that columns without isVisible are not in the state
174
- expect(result.current).not.toHaveProperty("email");
175
- expect(result.current).not.toHaveProperty("id");
134
+ // Should not throw
135
+ act(() => {
136
+ result.current.onColumnVisibilityChange({
137
+ name: false
138
+ });
139
+ });
140
+ expect(result.current.columnVisibility).toEqual({
141
+ name: false
142
+ });
143
+ });
144
+ });
145
+ describe("column ordering", () => {
146
+ it("initializes column order from column definitions", () => {
147
+ const allColumns = [createMockColumn("name"), createMockColumn("email"), createMockColumn("age")];
148
+ const {
149
+ result
150
+ } = renderHook(() => useColumnVisibility({
151
+ allColumns
152
+ }));
153
+ expect(result.current.columnOrder).toEqual(["name", "email", "age"]);
154
+ });
155
+ it("includes selection column first when hasSelectionColumn is true", () => {
156
+ const allColumns = [createMockColumn(SELECTION_COLUMN_ID), createMockColumn("name"), createMockColumn("email")];
157
+ const {
158
+ result
159
+ } = renderHook(() => useColumnVisibility({
160
+ allColumns
161
+ }));
162
+ expect(result.current.columnOrder).toEqual([SELECTION_COLUMN_ID, "name", "email"]);
163
+ });
164
+ it("updates column order when onColumnOrderChange is called", () => {
165
+ const allColumns = [createMockColumn("name"), createMockColumn("email"), createMockColumn("age")];
166
+ const {
167
+ result
168
+ } = renderHook(() => useColumnVisibility({
169
+ allColumns
170
+ }));
171
+ expect(result.current.columnOrder).toEqual(["name", "email", "age"]);
172
+ act(() => {
173
+ result.current.onColumnOrderChange(["email", "age", "name"]);
174
+ });
175
+ expect(result.current.columnOrder).toEqual(["email", "age", "name"]);
176
+ });
177
+ it("updates column order when columnDefinitions change", () => {
178
+ const initialColumns = [createMockColumn("name"), createMockColumn("email")];
179
+ const {
180
+ result,
181
+ rerender
182
+ } = renderHook(({
183
+ allColumns
184
+ }) => useColumnVisibility({
185
+ allColumns
186
+ }), {
187
+ initialProps: {
188
+ allColumns: initialColumns
189
+ }
190
+ });
191
+ expect(result.current.columnOrder).toEqual(["name", "email"]);
192
+ const updatedColumns = [createMockColumn("age"), createMockColumn("name"), createMockColumn("email")];
193
+ rerender({
194
+ allColumns: updatedColumns
195
+ });
196
+ expect(result.current.columnOrder).toEqual(["age", "name", "email"]);
197
+ });
176
198
  });
177
199
  });
178
200
  //# sourceMappingURL=useColumnVisibility.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnVisibility.test.js","names":["renderHook","waitFor","describe","expect","it","useColumnVisibility","TestObjectType","type","apiName","result","columnDefinitions","undefined","current","toBeUndefined","locator","id","toEqual","isVisible","creator","name","myFunction","myRdp","rerender","initialProps","email","age","not","toHaveProperty"],"sources":["useColumnVisibility.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n ObjectTypeDefinition,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { renderHook, waitFor } from \"@testing-library/react\";\nimport { describe, expect, it } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useColumnVisibility } from \"../useColumnVisibility.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\ndescribe(useColumnVisibility, () => {\n it(\"returns undefined columnVisibility when no columnDefinitions provided\", () => {\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions: undefined,\n })\n );\n\n expect(result.current).toBeUndefined();\n });\n\n it(\"returns empty columnVisibility when columnDefinitions have no isVisible properties\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n expect(result.current).toEqual({});\n });\n\n it(\"handles mixed column types with different visibility states\", async () => {\n const mockRdpCreator = (() => ({})) as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { myRdp: SimplePropertyDef },\n { myFunction: QueryDefinition<{}> }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n isVisible: false,\n },\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n isVisible: true,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n myFunction: false,\n myRdp: true,\n });\n });\n });\n\n it(\"updates columnVisibility when columnDefinitions change\", async () => {\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, {}, {}>\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ columnDefinitions }) =>\n useColumnVisibility({\n columnDefinitions,\n }),\n {\n initialProps: { columnDefinitions: initialColumnDefinitions },\n },\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n });\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, {}, {}>\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: false,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n isVisible: true,\n },\n ];\n\n rerender({ columnDefinitions: updatedColumnDefinitions });\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: false,\n email: true,\n });\n });\n });\n\n it(\"only includes columns with explicit isVisible in the visibility state\", async () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n isVisible: true,\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"age\" as TestObjectKeys },\n isVisible: false,\n },\n {\n locator: { type: \"property\", id: \"id\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility({\n columnDefinitions,\n })\n );\n\n await waitFor(() => {\n expect(result.current).toEqual({\n name: true,\n age: false,\n });\n });\n\n // Verify that columns without isVisible are not in the state\n expect(result.current).not.toHaveProperty(\"email\");\n expect(result.current).not.toHaveProperty(\"id\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useColumnVisibility.test.js","names":["act","renderHook","describe","expect","it","vi","SELECTION_COLUMN_ID","useColumnVisibility","TestObjectType","type","apiName","createMockColumn","id","isVisible","meta","undefined","allColumns","result","current","columnVisibility","toEqual","name","email","myFunction","myRdp","initialColumns","rerender","initialProps","updatedColumns","onColumnVisibilityChanged","fn","onColumnVisibilityChange","prev","toHaveBeenCalledWith","columnId","columnOrder","onColumnOrderChange"],"sources":["useColumnVisibility.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition } from \"@osdk/api\";\nimport type { ColumnDef } from \"@tanstack/react-table\";\nimport { act, renderHook } from \"@testing-library/react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport { SELECTION_COLUMN_ID } from \"../../utils/constants.js\";\nimport { useColumnVisibility } from \"../useColumnVisibility.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\n\n// Helper to create mock ColumnDef objects that mirror what useColumnDefs would produce\nfunction createMockColumn<T>(\n id: string,\n isVisible?: boolean,\n): ColumnDef<T> {\n return {\n id,\n meta: isVisible !== undefined ? { isVisible } : undefined,\n } as ColumnDef<T>;\n}\n\ndescribe(useColumnVisibility, () => {\n describe(\"column visibility\", () => {\n it(\"returns empty columnVisibility when no columnDefinitions provided\", () => {\n const allColumns: ColumnDef<unknown>[] = [];\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnVisibility).toEqual({});\n });\n\n it(\"initializes all columns as visible by default\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnVisibility).toEqual({\n name: true,\n email: true,\n });\n });\n\n it(\"handles mixed column types with different visibility states\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\", true),\n createMockColumn(\"myFunction\", false),\n createMockColumn(\"myRdp\", true),\n createMockColumn(\"email\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnVisibility).toEqual({\n name: true,\n myFunction: false,\n myRdp: true,\n email: true,\n });\n });\n\n it(\"updates columnVisibility when columnDefinitions change\", () => {\n const initialColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\", true),\n ];\n\n const { result, rerender } = renderHook(\n ({ allColumns }) =>\n useColumnVisibility<TestObject>({\n allColumns,\n }),\n {\n initialProps: { allColumns: initialColumns },\n },\n );\n\n expect(result.current.columnVisibility).toEqual({\n name: true,\n });\n\n const updatedColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\", false),\n createMockColumn(\"email\", true),\n ];\n\n rerender({ allColumns: updatedColumns });\n\n expect(result.current.columnVisibility).toEqual({\n name: false,\n email: true,\n });\n });\n });\n\n describe(\"onColumnVisibilityChanged callback\", () => {\n it(\"calls onColumnVisibilityChanged when visibility changed\", () => {\n const onColumnVisibilityChanged = vi.fn();\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\", true),\n createMockColumn(\"email\", true),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n onColumnVisibilityChanged,\n })\n );\n\n act(() => {\n result.current.onColumnVisibilityChange((prev) => ({\n ...prev,\n email: false,\n }));\n });\n\n expect(result.current.columnVisibility).toEqual({\n name: true,\n email: false,\n });\n\n expect(onColumnVisibilityChanged).toHaveBeenCalledWith([\n { columnId: \"name\", isVisible: true },\n { columnId: \"email\", isVisible: false },\n ]);\n });\n\n it(\"does not call callback when callback is not provided\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\", true),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n // Should not throw\n act(() => {\n result.current.onColumnVisibilityChange({\n name: false,\n });\n });\n\n expect(result.current.columnVisibility).toEqual({\n name: false,\n });\n });\n });\n\n describe(\"column ordering\", () => {\n it(\"initializes column order from column definitions\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n createMockColumn(\"age\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnOrder).toEqual([\"name\", \"email\", \"age\"]);\n });\n\n it(\"includes selection column first when hasSelectionColumn is true\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(SELECTION_COLUMN_ID),\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnOrder).toEqual([\n SELECTION_COLUMN_ID,\n \"name\",\n \"email\",\n ]);\n });\n\n it(\"updates column order when onColumnOrderChange is called\", () => {\n const allColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n createMockColumn(\"age\"),\n ];\n\n const { result } = renderHook(() =>\n useColumnVisibility<TestObject>({\n allColumns,\n })\n );\n\n expect(result.current.columnOrder).toEqual([\"name\", \"email\", \"age\"]);\n\n act(() => {\n result.current.onColumnOrderChange([\"email\", \"age\", \"name\"]);\n });\n\n expect(result.current.columnOrder).toEqual([\"email\", \"age\", \"name\"]);\n });\n\n it(\"updates column order when columnDefinitions change\", () => {\n const initialColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n ];\n\n const { result, rerender } = renderHook(\n ({ allColumns }) =>\n useColumnVisibility<TestObject>({\n allColumns,\n }),\n {\n initialProps: { allColumns: initialColumns },\n },\n );\n\n expect(result.current.columnOrder).toEqual([\"name\", \"email\"]);\n\n const updatedColumns: ColumnDef<unknown>[] = [\n createMockColumn(\"age\"),\n createMockColumn(\"name\"),\n createMockColumn(\"email\"),\n ];\n\n rerender({ allColumns: updatedColumns });\n\n expect(result.current.columnOrder).toEqual([\"age\", \"name\", \"email\"]);\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -15,29 +15,49 @@
15
15
  */
16
16
 
17
17
  import { OsdkProvider } from "@osdk/react";
18
+ import { useObjectSet, useOsdkObjects } from "@osdk/react/experimental";
18
19
  import { renderHook } from "@testing-library/react";
19
20
  import * as React from "react";
20
- import { describe, expect, it, vi } from "vitest";
21
+ import { beforeEach, describe, expect, it, vi } from "vitest";
21
22
  import { useObjectTableData } from "../useObjectTableData.js";
23
+ const TestObjectType = {
24
+ type: "object",
25
+ apiName: "TestObject"
26
+ };
22
27
  vi.mock("@osdk/react/experimental", () => ({
23
28
  useOsdkObjects: vi.fn((objectType, options) => {
24
29
  return {
25
30
  data: [],
26
31
  isLoading: false,
27
32
  error: undefined,
28
- fetchNextPage: vi.fn(),
29
- hasNextPage: false,
30
- isFetchingNextPage: false,
33
+ fetchMore: undefined,
34
+ isOptimistic: false,
31
35
  // Return the options to verify they were passed correctly
32
36
  _testOptions: options
33
37
  };
38
+ }),
39
+ useObjectSet: vi.fn((objectSet, options) => {
40
+ return {
41
+ data: [],
42
+ isLoading: false,
43
+ error: undefined,
44
+ fetchMore: vi.fn(),
45
+ totalCount: undefined,
46
+ // Return the options to verify they were passed correctly
47
+ _testOptions: options,
48
+ isOptimistic: false
49
+ };
34
50
  })
35
51
  }));
36
- const TestObjectType = {
37
- type: "object",
38
- apiName: "TestObject"
52
+ const TestInterfaceType = {
53
+ type: "interface",
54
+ apiName: "TestInterface"
39
55
  };
40
56
  describe(useObjectTableData, () => {
57
+ beforeEach(() => {
58
+ vi.mocked(useOsdkObjects).mockClear();
59
+ vi.mocked(useObjectSet).mockClear();
60
+ });
41
61
  const wrapper = (client => {
42
62
  return ({
43
63
  children
@@ -47,30 +67,29 @@ describe(useObjectTableData, () => {
47
67
  }, children);
48
68
  };
49
69
  })({});
50
- it("calls useOsdkObjects with pageSize of 50", () => {
51
- const {
52
- result
53
- } = renderHook(() => useObjectTableData(TestObjectType), {
54
- wrapper
55
- });
56
- const mockResult = result.current;
57
- expect(mockResult._testOptions).toEqual({
58
- withProperties: undefined,
59
- pageSize: 50,
60
- orderBy: undefined
61
- });
62
- });
63
- it("calls useOsdkObjects with filter clause provided", () => {
70
+ const mockObjectSet = {
71
+ $objectSetInternals: {
72
+ def: TestObjectType
73
+ }
74
+ };
75
+ it("calls useOsdkObjects with filter clause and orderBy provided", () => {
64
76
  const filterClause = {
65
77
  name: "John"
66
78
  };
79
+ const orderBy = [{
80
+ id: "name",
81
+ desc: false
82
+ }];
67
83
  const {
68
84
  result
69
- } = renderHook(() => useObjectTableData(TestObjectType, undefined, filterClause), {
85
+ } = renderHook(() => useObjectTableData(TestObjectType, undefined, filterClause, orderBy), {
70
86
  wrapper
71
87
  });
72
88
  const mockResult = result.current;
73
89
  expect(mockResult._testOptions.where).toEqual(filterClause);
90
+ expect(mockResult._testOptions.orderBy).toEqual({
91
+ "name": "asc"
92
+ });
74
93
  });
75
94
  it("calls useOsdkObjects without withProperties when no columnDefinitions provided", () => {
76
95
  const {
@@ -219,9 +238,78 @@ describe(useObjectTableData, () => {
219
238
  expect(result.current).toHaveProperty("data");
220
239
  expect(result.current).toHaveProperty("isLoading");
221
240
  expect(result.current).toHaveProperty("error");
222
- expect(result.current).toHaveProperty("fetchNextPage");
223
- expect(result.current).toHaveProperty("hasNextPage");
224
- expect(result.current).toHaveProperty("isFetchingNextPage");
241
+ expect(result.current).toHaveProperty("fetchMore");
242
+ });
243
+ it("when no objectSet provided, only enables useOsdkObjects", () => {
244
+ const {
245
+ result
246
+ } = renderHook(() => useObjectTableData(TestObjectType), {
247
+ wrapper
248
+ });
249
+ expect(useOsdkObjects).toHaveBeenCalledWith(TestObjectType, expect.objectContaining({
250
+ enabled: true,
251
+ pageSize: 50
252
+ }));
253
+ expect(useObjectSet).toHaveBeenCalledWith(undefined, expect.objectContaining({
254
+ enabled: false,
255
+ pageSize: 50
256
+ }));
257
+ });
258
+ it(" when objectSet is provided, only enables useObjectSet", () => {
259
+ const {
260
+ result
261
+ } = renderHook(() => useObjectTableData(TestObjectType, undefined, undefined, undefined, mockObjectSet), {
262
+ wrapper
263
+ });
264
+ expect(useOsdkObjects).toHaveBeenCalledWith(TestObjectType, expect.objectContaining({
265
+ enabled: false,
266
+ pageSize: 50
267
+ }));
268
+ expect(useObjectSet).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({
269
+ enabled: true,
270
+ pageSize: 50
271
+ }));
272
+ });
273
+ it("when objectSet is provided but type is interface, only enables useOsdkObjects ", () => {
274
+ renderHook(() => useObjectTableData(TestInterfaceType, undefined, undefined, undefined, mockObjectSet), {
275
+ wrapper
276
+ });
277
+ expect(useOsdkObjects).toHaveBeenCalledWith(TestInterfaceType, expect.objectContaining({
278
+ enabled: true,
279
+ pageSize: 50
280
+ }));
281
+ expect(useObjectSet).toHaveBeenCalledWith(undefined, expect.objectContaining({
282
+ enabled: false,
283
+ pageSize: 50
284
+ }));
285
+ });
286
+ it("passes filter, orderBy and objectSetOptions to useObjectSet", () => {
287
+ const filterClause = {
288
+ name: "John"
289
+ };
290
+ const sorting = [{
291
+ id: "name",
292
+ desc: false
293
+ }];
294
+ const objectSetOptions = {
295
+ union: [mockObjectSet],
296
+ intersect: [],
297
+ subtract: []
298
+ };
299
+ renderHook(() => useObjectTableData(TestObjectType, undefined, filterClause, sorting, mockObjectSet, objectSetOptions), {
300
+ wrapper
301
+ });
302
+ expect(useObjectSet).toHaveBeenCalledWith(expect.anything(), expect.objectContaining({
303
+ enabled: true,
304
+ pageSize: 50,
305
+ where: filterClause,
306
+ orderBy: {
307
+ name: "asc"
308
+ },
309
+ union: objectSetOptions.union,
310
+ intersect: objectSetOptions.intersect,
311
+ subtract: objectSetOptions.subtract
312
+ }));
225
313
  });
226
314
  });
227
315
  //# sourceMappingURL=useObjectTableData.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useObjectTableData.test.js","names":["OsdkProvider","renderHook","React","describe","expect","it","vi","useObjectTableData","mock","useOsdkObjects","fn","objectType","options","data","isLoading","error","undefined","fetchNextPage","hasNextPage","isFetchingNextPage","_testOptions","TestObjectType","type","apiName","wrapper","client","children","createElement","result","mockResult","current","toEqual","withProperties","pageSize","orderBy","filterClause","name","where","toBeUndefined","toBe","columnDefinitions","locator","id","mockRdpCreator1","mockRdpCreator2","creator","rdp1","rdp2","mockRdpCreator","rerender","colDefs","initialProps","firstMockResult","firstWithProperties","secondMockResult","toHaveProperty"],"sources":["useObjectTableData.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n ObjectTypeDefinition,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport { OsdkProvider } from \"@osdk/react\";\nimport { renderHook } from \"@testing-library/react\";\nimport * as React from \"react\";\nimport { describe, expect, it, vi } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useObjectTableData } from \"../useObjectTableData.js\";\n\ninterface MockUseOsdkObjectsReturn {\n data: [];\n isLoading: false;\n error: undefined;\n fetchNextPage: ReturnType<typeof vi.fn>;\n hasNextPage: false;\n isFetchingNextPage: false;\n _testOptions: {\n withProperties?: Record<string, unknown>;\n pageSize: number;\n where?: WhereClause<any>;\n };\n}\n\nvi.mock(\"@osdk/react/experimental\", () => ({\n useOsdkObjects: vi.fn((objectType, options): MockUseOsdkObjectsReturn => {\n return {\n data: [],\n isLoading: false,\n error: undefined,\n fetchNextPage: vi.fn(),\n hasNextPage: false,\n isFetchingNextPage: false,\n // Return the options to verify they were passed correctly\n _testOptions: options,\n };\n }),\n}));\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\ndescribe(useObjectTableData, () => {\n const createWrapper = (client: Client) => {\n return ({ children }: React.PropsWithChildren) => {\n return <OsdkProvider client={client}>{children}</OsdkProvider>;\n };\n };\n\n const fakeClient = {} as unknown as Client;\n const wrapper = createWrapper(fakeClient);\n\n it(\"calls useOsdkObjects with pageSize of 50\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions).toEqual({\n withProperties: undefined,\n pageSize: 50,\n orderBy: undefined,\n });\n });\n\n it(\"calls useOsdkObjects with filter clause provided\", () => {\n const filterClause = {\n name: \"John\",\n } as unknown as WhereClause<TestObject>;\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, undefined, filterClause),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.where).toEqual(filterClause);\n });\n\n it(\"calls useOsdkObjects without withProperties when no columnDefinitions provided\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, undefined),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"calls useOsdkObjects without withProperties when columnDefinitions have no RDP columns\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"extracts RDP creators and passes them to useOsdkObjects\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { rdp1: any; rdp2: any },\n { myFunction: any }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockUseOsdkObjectsReturn;\n expect(mockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"memoizes withProperties based on columnDefinitions\", () => {\n const mockRdpCreator = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<TestObject, { myRdp: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ colDefs }) => useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: columnDefinitions },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n const firstWithProperties = firstMockResult._testOptions.withProperties;\n\n // Rerender with same columnDefinitions reference\n rerender({ colDefs: columnDefinitions });\n\n // Should be the same reference (memoized)\n const secondMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(secondMockResult._testOptions.withProperties).toBe(\n firstWithProperties,\n );\n });\n\n it(\"updates withProperties when columnDefinitions change\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp1: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n ];\n\n type ColDefs =\n | Array<\n ColumnDefinition<TestObject, Record<string, SimplePropertyDef>, {}>\n >\n | undefined;\n\n const { result, rerender } = renderHook(\n ({ colDefs }: { colDefs: ColDefs }) =>\n useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: initialColumnDefinitions as ColDefs },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(firstMockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp2: SimplePropertyDef }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n ];\n\n rerender({ colDefs: updatedColumnDefinitions as ColDefs });\n\n const secondMockResult = result\n .current as unknown as MockUseOsdkObjectsReturn;\n expect(secondMockResult._testOptions.withProperties).toEqual({\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"returns useOsdkObjects result structure\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n expect(result.current).toHaveProperty(\"data\");\n expect(result.current).toHaveProperty(\"isLoading\");\n expect(result.current).toHaveProperty(\"error\");\n expect(result.current).toHaveProperty(\"fetchNextPage\");\n expect(result.current).toHaveProperty(\"hasNextPage\");\n expect(result.current).toHaveProperty(\"isFetchingNextPage\");\n });\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useObjectTableData.test.js","names":["OsdkProvider","useObjectSet","useOsdkObjects","renderHook","React","beforeEach","describe","expect","it","vi","useObjectTableData","TestObjectType","type","apiName","mock","fn","objectType","options","data","isLoading","error","undefined","fetchMore","isOptimistic","_testOptions","objectSet","totalCount","TestInterfaceType","mocked","mockClear","wrapper","client","children","createElement","mockObjectSet","$objectSetInternals","def","filterClause","name","orderBy","id","desc","result","mockResult","current","where","toEqual","withProperties","toBeUndefined","pageSize","toBe","columnDefinitions","locator","mockRdpCreator1","mockRdpCreator2","creator","rdp1","rdp2","mockRdpCreator","rerender","colDefs","initialProps","firstMockResult","firstWithProperties","secondMockResult","toHaveProperty","toHaveBeenCalledWith","objectContaining","enabled","anything","sorting","objectSetOptions","union","intersect","subtract"],"sources":["useObjectTableData.test.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n DerivedProperty,\n InterfaceDefinition,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n SimplePropertyDef,\n WhereClause,\n} from \"@osdk/api\";\nimport type { Client } from \"@osdk/client\";\nimport { OsdkProvider } from \"@osdk/react\";\nimport type { UseOsdkListResult } from \"@osdk/react/experimental\";\nimport { useObjectSet, useOsdkObjects } from \"@osdk/react/experimental\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport { renderHook } from \"@testing-library/react\";\nimport * as React from \"react\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\nimport type { ColumnDefinition } from \"../../ObjectTableApi.js\";\nimport { useObjectTableData } from \"../useObjectTableData.js\";\n\nconst TestObjectType = {\n type: \"object\",\n apiName: \"TestObject\",\n} as const satisfies ObjectTypeDefinition;\n\ntype TestObject = typeof TestObjectType;\ntype TestObjectKeys = PropertyKeys<TestObject>;\n\ninterface MockReturnType extends UseOsdkListResult<TestObject> {\n _testOptions: {\n withProperties?: Record<string, unknown>;\n pageSize: number;\n where?: WhereClause<any>;\n enabled?: boolean;\n orderBy?: Record<string, \"asc\" | \"desc\">;\n };\n}\n\nvi.mock(\"@osdk/react/experimental\", () => ({\n useOsdkObjects: vi.fn((objectType, options): MockReturnType => {\n return {\n data: [],\n isLoading: false,\n error: undefined,\n fetchMore: undefined,\n isOptimistic: false,\n // Return the options to verify they were passed correctly\n _testOptions: options,\n };\n }),\n useObjectSet: vi.fn((objectSet, options): MockReturnType => {\n return {\n data: [],\n isLoading: false,\n error: undefined,\n fetchMore: vi.fn(),\n totalCount: undefined,\n // Return the options to verify they were passed correctly\n _testOptions: options,\n isOptimistic: false,\n };\n }),\n}));\n\nconst TestInterfaceType = {\n type: \"interface\",\n apiName: \"TestInterface\",\n} as const satisfies InterfaceDefinition;\n\ndescribe(useObjectTableData, () => {\n beforeEach(() => {\n vi.mocked(useOsdkObjects).mockClear();\n vi.mocked(useObjectSet).mockClear();\n });\n const createWrapper = (client: Client) => {\n return ({ children }: React.PropsWithChildren) => {\n return <OsdkProvider client={client}>{children}</OsdkProvider>;\n };\n };\n\n const fakeClient = {} as unknown as Client;\n const wrapper = createWrapper(fakeClient);\n\n const mockObjectSet = {\n $objectSetInternals: {\n def: TestObjectType,\n },\n } as unknown as ObjectSet<TestObject>;\n\n it(\"calls useOsdkObjects with filter clause and orderBy provided\", () => {\n const filterClause = {\n name: \"John\",\n } as unknown as WhereClause<TestObject>;\n const orderBy: SortingState = [{\n id: \"name\",\n desc: false,\n }];\n const { result } = renderHook(\n () =>\n useObjectTableData(TestObjectType, undefined, filterClause, orderBy),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockReturnType;\n expect(mockResult._testOptions.where).toEqual(filterClause);\n expect(mockResult._testOptions.orderBy).toEqual({\n \"name\": \"asc\",\n });\n });\n\n it(\"calls useOsdkObjects without withProperties when no columnDefinitions provided\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, undefined),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockReturnType;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"calls useOsdkObjects without withProperties when columnDefinitions have no RDP columns\", () => {\n const columnDefinitions: Array<ColumnDefinition<TestObject, {}, {}>> = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"property\", id: \"email\" as TestObjectKeys },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockReturnType;\n expect(mockResult._testOptions.withProperties).toBeUndefined();\n expect(mockResult._testOptions.pageSize).toBe(50);\n });\n\n it(\"extracts RDP creators and passes them to useOsdkObjects\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<\n TestObject,\n { rdp1: any; rdp2: any },\n { myFunction: any }\n >\n > = [\n {\n locator: { type: \"property\", id: \"name\" as TestObjectKeys },\n },\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n {\n locator: { type: \"function\", id: \"myFunction\" },\n },\n ];\n\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType, columnDefinitions),\n { wrapper },\n );\n\n const mockResult = result.current as unknown as MockReturnType;\n expect(mockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"memoizes withProperties based on columnDefinitions\", () => {\n const mockRdpCreator = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const columnDefinitions: Array<\n ColumnDefinition<TestObject, { myRdp: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"myRdp\", creator: mockRdpCreator },\n },\n ];\n\n const { result, rerender } = renderHook(\n ({ colDefs }) => useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: columnDefinitions },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockReturnType;\n const firstWithProperties = firstMockResult._testOptions.withProperties;\n\n // Rerender with same columnDefinitions reference\n rerender({ colDefs: columnDefinitions });\n\n // Should be the same reference (memoized)\n const secondMockResult = result\n .current as unknown as MockReturnType;\n expect(secondMockResult._testOptions.withProperties).toBe(\n firstWithProperties,\n );\n });\n\n it(\"updates withProperties when columnDefinitions change\", () => {\n const mockRdpCreator1 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n const mockRdpCreator2 = vi.fn() as unknown as DerivedProperty.Creator<\n TestObject,\n SimplePropertyDef\n >;\n\n const initialColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp1: any }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp1\", creator: mockRdpCreator1 },\n },\n ];\n\n type ColDefs =\n | Array<\n ColumnDefinition<TestObject, Record<string, SimplePropertyDef>, {}>\n >\n | undefined;\n\n const { result, rerender } = renderHook(\n ({ colDefs }: { colDefs: ColDefs }) =>\n useObjectTableData(TestObjectType, colDefs),\n {\n initialProps: { colDefs: initialColumnDefinitions as ColDefs },\n wrapper,\n },\n );\n\n const firstMockResult = result\n .current as unknown as MockReturnType;\n expect(firstMockResult._testOptions.withProperties).toEqual({\n rdp1: mockRdpCreator1,\n });\n\n const updatedColumnDefinitions: Array<\n ColumnDefinition<TestObject, { rdp2: SimplePropertyDef }, {}>\n > = [\n {\n locator: { type: \"rdp\", id: \"rdp2\", creator: mockRdpCreator2 },\n },\n ];\n\n rerender({ colDefs: updatedColumnDefinitions as ColDefs });\n\n const secondMockResult = result\n .current as unknown as MockReturnType;\n expect(secondMockResult._testOptions.withProperties).toEqual({\n rdp2: mockRdpCreator2,\n });\n });\n\n it(\"returns useOsdkObjects result structure\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n expect(result.current).toHaveProperty(\"data\");\n expect(result.current).toHaveProperty(\"isLoading\");\n expect(result.current).toHaveProperty(\"error\");\n expect(result.current).toHaveProperty(\"fetchMore\");\n });\n\n it(\"when no objectSet provided, only enables useOsdkObjects\", () => {\n const { result } = renderHook(\n () => useObjectTableData(TestObjectType),\n { wrapper },\n );\n\n expect(useOsdkObjects).toHaveBeenCalledWith(\n TestObjectType,\n expect.objectContaining({\n enabled: true,\n pageSize: 50,\n }),\n );\n\n expect(useObjectSet).toHaveBeenCalledWith(\n undefined,\n expect.objectContaining({\n enabled: false,\n pageSize: 50,\n }),\n );\n });\n\n it(\" when objectSet is provided, only enables useObjectSet\", () => {\n const { result } = renderHook(\n () =>\n useObjectTableData(\n TestObjectType,\n undefined,\n undefined,\n undefined,\n mockObjectSet,\n ),\n { wrapper },\n );\n\n expect(useOsdkObjects).toHaveBeenCalledWith(\n TestObjectType,\n expect.objectContaining({\n enabled: false,\n pageSize: 50,\n }),\n );\n\n expect(useObjectSet).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n enabled: true,\n pageSize: 50,\n }),\n );\n });\n\n it(\"when objectSet is provided but type is interface, only enables useOsdkObjects \", () => {\n renderHook(\n () =>\n useObjectTableData(\n TestInterfaceType,\n undefined,\n undefined,\n undefined,\n mockObjectSet as any,\n ),\n { wrapper },\n );\n\n expect(useOsdkObjects).toHaveBeenCalledWith(\n TestInterfaceType,\n expect.objectContaining({\n enabled: true,\n pageSize: 50,\n }),\n );\n\n expect(useObjectSet).toHaveBeenCalledWith(\n undefined,\n expect.objectContaining({\n enabled: false,\n pageSize: 50,\n }),\n );\n });\n\n it(\"passes filter, orderBy and objectSetOptions to useObjectSet\", () => {\n const filterClause = {\n name: \"John\",\n } as unknown as WhereClause<TestObject>;\n const sorting: SortingState = [\n {\n id: \"name\",\n desc: false,\n },\n ];\n const objectSetOptions = {\n union: [mockObjectSet],\n intersect: [],\n subtract: [],\n };\n\n renderHook(\n () =>\n useObjectTableData(\n TestObjectType,\n undefined,\n filterClause,\n sorting,\n mockObjectSet,\n objectSetOptions,\n ),\n { wrapper },\n );\n\n expect(useObjectSet).toHaveBeenCalledWith(\n expect.anything(),\n expect.objectContaining({\n enabled: true,\n pageSize: 50,\n where: filterClause,\n orderBy: { name: \"asc\" },\n union: objectSetOptions.union,\n intersect: objectSetOptions.intersect,\n subtract: objectSetOptions.subtract,\n }),\n );\n });\n});\n"],"mappings":"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","ignoreList":[]}