@osdk/react-components 0.2.0-beta.1 → 0.2.0-beta.11

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 (628) hide show
  1. package/CHANGELOG.md +118 -0
  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 +46 -0
  168. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -0
  169. package/build/browser/object-table/EditableCell.js +101 -0
  170. package/build/browser/object-table/EditableCell.js.map +1 -0
  171. package/build/browser/object-table/EditableCell.module.css +31 -0
  172. package/build/browser/object-table/EditableCell.module.css.js +7 -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 +62 -16
  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 +77 -934
  194. package/build/browser/object-table/Table.js.map +1 -1
  195. package/build/browser/object-table/Table.module.css +37 -0
  196. package/build/browser/object-table/Table.module.css.js +7 -0
  197. package/build/browser/object-table/TableBody.js +43 -261
  198. package/build/browser/object-table/TableBody.js.map +1 -1
  199. package/build/browser/object-table/TableBody.module.css +22 -0
  200. package/build/browser/object-table/TableBody.module.css.js +6 -0
  201. package/build/browser/object-table/TableCell.js +31 -111
  202. package/build/browser/object-table/TableCell.module.css +75 -0
  203. package/build/browser/object-table/TableCell.module.css.js +8 -0
  204. package/build/browser/object-table/TableEditContainer.js +79 -0
  205. package/build/browser/object-table/TableEditContainer.js.map +1 -0
  206. package/build/browser/object-table/TableEditContainer.module.css +44 -0
  207. package/build/browser/object-table/TableEditContainer.module.css.js +9 -0
  208. package/build/browser/object-table/TableHeader.js +126 -216
  209. package/build/browser/object-table/TableHeader.js.map +1 -1
  210. package/build/browser/object-table/TableHeader.module.css +108 -0
  211. package/build/browser/object-table/TableHeader.module.css.js +10 -0
  212. package/build/browser/object-table/TableHeaderContent.js +21 -18
  213. package/build/browser/object-table/TableHeaderContent.module.css +30 -0
  214. package/build/browser/object-table/TableHeaderContent.module.css.js +6 -0
  215. package/build/browser/object-table/TableHeaderWithPopover.js +110 -93
  216. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
  217. package/build/browser/object-table/TableHeaderWithPopover.module.css +141 -0
  218. package/build/browser/object-table/TableHeaderWithPopover.module.css.js +17 -0
  219. package/build/browser/object-table/TableRow.js +37 -147
  220. package/build/browser/object-table/TableRow.js.map +1 -1
  221. package/build/browser/object-table/TableRow.module.css +63 -0
  222. package/build/browser/object-table/TableRow.module.css.js +6 -0
  223. package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
  224. package/build/browser/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
  225. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
  226. package/build/browser/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
  227. package/build/browser/object-table/hooks/__tests__/useEditableTable.test.js +292 -0
  228. package/build/browser/object-table/hooks/__tests__/useEditableTable.test.js.map +1 -0
  229. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
  230. package/build/browser/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  231. package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
  232. package/build/browser/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
  233. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
  234. package/build/browser/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  235. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
  236. package/build/browser/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
  237. package/build/browser/object-table/hooks/useColumnDefs.js +16 -3
  238. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  239. package/build/browser/object-table/hooks/useColumnResize.js +45 -0
  240. package/build/browser/object-table/hooks/useColumnResize.js.map +1 -0
  241. package/build/browser/object-table/hooks/useColumnVisibility.js +52 -20
  242. package/build/browser/object-table/hooks/useColumnVisibility.js.map +1 -1
  243. package/build/browser/object-table/hooks/useEditableTable.js +66 -0
  244. package/build/browser/object-table/hooks/useEditableTable.js.map +1 -0
  245. package/build/browser/object-table/hooks/useObjectTableData.js +37 -7
  246. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  247. package/build/browser/object-table/hooks/useRowSelection.js +31 -10
  248. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  249. package/build/browser/object-table/hooks/useSelectionColumn.js +15 -6
  250. package/build/browser/object-table/hooks/useSelectionColumn.js.map +1 -1
  251. package/build/browser/object-table/utils/getCellId.js +20 -0
  252. package/build/browser/object-table/utils/getCellId.js.map +1 -0
  253. package/build/browser/object-table/utils/types.js +2 -0
  254. package/build/browser/object-table/utils/types.js.map +1 -0
  255. package/build/browser/public/experimental.js +2 -0
  256. package/build/browser/public/experimental.js.map +1 -1
  257. package/build/browser/shared/ErrorBoundary.js +62 -0
  258. package/build/browser/shared/ErrorBoundary.js.map +1 -0
  259. package/build/browser/shared/ErrorBoundary.module.css +55 -0
  260. package/build/browser/shared/ErrorBoundary.module.css.js +8 -0
  261. package/build/browser/styles.css +3133 -0
  262. package/build/cjs/public/experimental.cjs +4123 -248
  263. package/build/cjs/public/experimental.cjs.map +1 -1
  264. package/build/cjs/public/experimental.css +1873 -154
  265. package/build/cjs/public/experimental.css.map +1 -1
  266. package/build/cjs/public/experimental.d.cts +475 -50
  267. package/build/esm/base-components/action-button/ActionButton.js +31 -0
  268. package/build/esm/base-components/action-button/ActionButton.js.map +1 -0
  269. package/build/esm/base-components/action-button/ActionButton.module.css +70 -0
  270. package/build/esm/base-components/checkbox/Checkbox.module.css +1 -1
  271. package/build/esm/base-components/combobox/Combobox.js +124 -0
  272. package/build/esm/base-components/combobox/Combobox.js.map +1 -0
  273. package/build/esm/base-components/combobox/Combobox.module.css +177 -0
  274. package/build/esm/base-components/dialog/Dialog.js +52 -0
  275. package/build/esm/base-components/dialog/Dialog.js.map +1 -0
  276. package/build/esm/base-components/dialog/Dialog.module.css +101 -0
  277. package/build/esm/base-components/draggable-list/DraggableList.js +155 -0
  278. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -0
  279. package/build/esm/base-components/draggable-list/DraggableList.module.css +108 -0
  280. package/build/esm/base-components/search-bar/SearchBar.js +44 -0
  281. package/build/esm/base-components/search-bar/SearchBar.js.map +1 -0
  282. package/build/esm/base-components/search-bar/SearchBar.module.css +53 -0
  283. package/build/esm/base-components/select/Select.js +89 -0
  284. package/build/esm/base-components/select/Select.js.map +1 -0
  285. package/build/esm/base-components/select/Select.module.css +138 -0
  286. package/build/esm/base-components/switch/Switch.js +33 -0
  287. package/build/esm/base-components/switch/Switch.js.map +1 -0
  288. package/build/esm/base-components/switch/Switch.module.css +91 -0
  289. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  290. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  291. package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js +202 -0
  292. package/build/esm/filter-list/__tests__/LinkedPropertyInput.test.js.map +1 -0
  293. package/build/esm/filter-list/__tests__/dateUtils.test.js +55 -0
  294. package/build/esm/filter-list/__tests__/dateUtils.test.js.map +1 -0
  295. package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js +296 -0
  296. package/build/esm/filter-list/__tests__/filterStateToWhereClause.test.js.map +1 -0
  297. package/build/esm/filter-list/__tests__/getFilterKey.test.js +53 -0
  298. package/build/esm/filter-list/__tests__/getFilterKey.test.js.map +1 -0
  299. package/build/esm/filter-list/__tests__/testUtils.js +203 -0
  300. package/build/esm/filter-list/__tests__/testUtils.js.map +1 -0
  301. package/build/esm/filter-list/base/FilterInput.js +542 -0
  302. package/build/esm/filter-list/base/FilterInput.js.map +1 -0
  303. package/build/esm/filter-list/base/FilterList.js +77 -0
  304. package/build/esm/filter-list/base/FilterList.js.map +1 -0
  305. package/build/esm/filter-list/base/FilterList.module.css +67 -0
  306. package/build/esm/filter-list/base/FilterListContent.js +57 -0
  307. package/build/esm/filter-list/base/FilterListContent.js.map +1 -0
  308. package/build/esm/filter-list/base/FilterListContent.module.css +27 -0
  309. package/build/esm/filter-list/base/FilterListHeader.js +58 -0
  310. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -0
  311. package/build/esm/filter-list/base/FilterListHeader.module.css +127 -0
  312. package/build/esm/filter-list/base/FilterListItem.js +75 -0
  313. package/build/esm/filter-list/base/FilterListItem.js.map +1 -0
  314. package/build/esm/filter-list/base/FilterListItem.module.css +38 -0
  315. package/build/esm/filter-list/base/index.js +22 -0
  316. package/build/esm/filter-list/base/index.js.map +1 -0
  317. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +75 -0
  318. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -0
  319. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +42 -0
  320. package/build/esm/filter-list/base/inputs/ContainsTextInput.js +85 -0
  321. package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -0
  322. package/build/esm/filter-list/base/inputs/ContainsTextInput.module.css +91 -0
  323. package/build/esm/filter-list/base/inputs/DateRangeInput.js +37 -0
  324. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -0
  325. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +237 -0
  326. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +1 -0
  327. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.module.css +20 -0
  328. package/build/esm/filter-list/base/inputs/ListogramInput.js +98 -0
  329. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -0
  330. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +88 -0
  331. package/build/esm/filter-list/base/inputs/MultiDateInput.js +82 -0
  332. package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -0
  333. package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +54 -0
  334. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +100 -0
  335. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -0
  336. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +35 -0
  337. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +76 -0
  338. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -0
  339. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +49 -0
  340. package/build/esm/filter-list/base/inputs/NumberRangeInput.js +48 -0
  341. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -0
  342. package/build/esm/filter-list/base/inputs/RangeInput.js +187 -0
  343. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -0
  344. package/build/esm/filter-list/base/inputs/RangeInput.module.css +81 -0
  345. package/build/esm/filter-list/base/inputs/SingleDateInput.js +61 -0
  346. package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -0
  347. package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +63 -0
  348. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +95 -0
  349. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -0
  350. package/build/esm/filter-list/base/inputs/SingleSelectInput.module.css +55 -0
  351. package/build/esm/filter-list/base/inputs/TextTagsInput.js +141 -0
  352. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -0
  353. package/build/esm/filter-list/base/inputs/TextTagsInput.module.css +25 -0
  354. package/build/esm/filter-list/base/inputs/TimelineInput.js +74 -0
  355. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -0
  356. package/build/esm/filter-list/base/inputs/TimelineInput.module.css +73 -0
  357. package/build/esm/filter-list/base/inputs/ToggleInput.js +43 -0
  358. package/build/esm/filter-list/base/inputs/ToggleInput.js.map +1 -0
  359. package/build/esm/filter-list/base/inputs/ToggleInput.module.css +34 -0
  360. package/build/esm/filter-list/base/inputs/createHistogramBuckets.js +53 -0
  361. package/build/esm/filter-list/base/inputs/createHistogramBuckets.js.map +1 -0
  362. package/build/esm/filter-list/base/inputs/dateUtils.js +57 -0
  363. package/build/esm/filter-list/base/inputs/dateUtils.js.map +1 -0
  364. package/build/esm/filter-list/base/inputs/index.js +25 -0
  365. package/build/esm/filter-list/base/inputs/index.js.map +1 -0
  366. package/build/esm/filter-list/base/inputs/shared.module.css +79 -0
  367. package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js +128 -0
  368. package/build/esm/filter-list/hooks/__tests__/useFilterListState.test.js.map +1 -0
  369. package/build/esm/filter-list/hooks/useFilterListState.js +119 -0
  370. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -0
  371. package/build/esm/filter-list/hooks/usePropertyAggregation.js +92 -0
  372. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -0
  373. package/build/esm/filter-list/types/AddFilterMenuTypes.js +2 -0
  374. package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +1 -0
  375. package/build/esm/filter-list/types/CustomRendererTypes.js +2 -0
  376. package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -0
  377. package/build/esm/filter-list/types/FilterPanelTypes.js +2 -0
  378. package/build/esm/filter-list/types/FilterPanelTypes.js.map +1 -0
  379. package/build/esm/filter-list/types/KeywordSearchTypes.js +2 -0
  380. package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -0
  381. package/build/esm/filter-list/types/LinkedFilterTypes.js +2 -0
  382. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -0
  383. package/build/esm/filter-list/types/index.js +22 -0
  384. package/build/esm/filter-list/types/index.js.map +1 -0
  385. package/build/esm/filter-list/utils/aggregationHelpers.js +44 -0
  386. package/build/esm/filter-list/utils/aggregationHelpers.js.map +1 -0
  387. package/build/esm/filter-list/utils/assertUnreachable.js +25 -0
  388. package/build/esm/filter-list/utils/assertUnreachable.js.map +1 -0
  389. package/build/esm/filter-list/utils/coerceFilterValue.js +33 -0
  390. package/build/esm/filter-list/utils/coerceFilterValue.js.map +1 -0
  391. package/build/esm/filter-list/utils/filterStateToWhereClause.js +337 -0
  392. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -0
  393. package/build/esm/filter-list/utils/filterValues.js +55 -0
  394. package/build/esm/filter-list/utils/filterValues.js.map +1 -0
  395. package/build/esm/filter-list/utils/getFilterKey.js +34 -0
  396. package/build/esm/filter-list/utils/getFilterKey.js.map +1 -0
  397. package/build/esm/object-table/ColumnConfigDialog.js +259 -0
  398. package/build/esm/object-table/ColumnConfigDialog.js.map +1 -0
  399. package/build/esm/object-table/ColumnConfigDialog.module.css +247 -0
  400. package/build/esm/object-table/DefaultCellRenderer.js +46 -0
  401. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -0
  402. package/build/esm/object-table/EditableCell.js +101 -0
  403. package/build/esm/object-table/EditableCell.js.map +1 -0
  404. package/build/esm/object-table/EditableCell.module.css +31 -0
  405. package/build/esm/object-table/LoadingStateTable.js +4 -4
  406. package/build/esm/object-table/LoadingStateTable.js.map +1 -1
  407. package/build/esm/object-table/MultiColumnSortDialog.js +178 -0
  408. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -0
  409. package/build/esm/object-table/MultiColumnSortDialog.module.css +195 -0
  410. package/build/esm/object-table/NonIdealState.module.css +2 -3
  411. package/build/esm/object-table/ObjectTable.js +62 -16
  412. package/build/esm/object-table/ObjectTable.js.map +1 -1
  413. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  414. package/build/esm/object-table/SelectionCells.js +15 -4
  415. package/build/esm/object-table/SelectionCells.js.map +1 -1
  416. package/build/esm/object-table/SortableItemsList.js +35 -0
  417. package/build/esm/object-table/SortableItemsList.js.map +1 -0
  418. package/build/esm/object-table/Table.js +34 -9
  419. package/build/esm/object-table/Table.js.map +1 -1
  420. package/build/esm/object-table/Table.module.css +18 -3
  421. package/build/esm/object-table/TableBody.js +8 -2
  422. package/build/esm/object-table/TableBody.js.map +1 -1
  423. package/build/esm/object-table/TableBody.module.css +2 -0
  424. package/build/esm/object-table/TableCell.module.css +14 -1
  425. package/build/esm/object-table/TableEditContainer.js +79 -0
  426. package/build/esm/object-table/TableEditContainer.js.map +1 -0
  427. package/build/esm/object-table/TableEditContainer.module.css +44 -0
  428. package/build/esm/object-table/TableHeader.js +93 -6
  429. package/build/esm/object-table/TableHeader.js.map +1 -1
  430. package/build/esm/object-table/TableHeader.module.css +9 -2
  431. package/build/esm/object-table/TableHeaderWithPopover.js +53 -22
  432. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
  433. package/build/esm/object-table/TableHeaderWithPopover.module.css +56 -25
  434. package/build/esm/object-table/TableRow.js +12 -4
  435. package/build/esm/object-table/TableRow.js.map +1 -1
  436. package/build/esm/object-table/TableRow.module.css +4 -1
  437. package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js +14 -2
  438. package/build/esm/object-table/hooks/__tests__/useColumnDefs.test.js.map +1 -1
  439. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js +160 -138
  440. package/build/esm/object-table/hooks/__tests__/useColumnVisibility.test.js.map +1 -1
  441. package/build/esm/object-table/hooks/__tests__/useEditableTable.test.js +292 -0
  442. package/build/esm/object-table/hooks/__tests__/useEditableTable.test.js.map +1 -0
  443. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js +113 -25
  444. package/build/esm/object-table/hooks/__tests__/useObjectTableData.test.js.map +1 -1
  445. package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js +48 -0
  446. package/build/esm/object-table/hooks/__tests__/useRowSelection.test.js.map +1 -1
  447. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js +27 -82
  448. package/build/esm/object-table/hooks/__tests__/useSelectionColumn.test.js.map +1 -1
  449. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js +290 -0
  450. package/build/esm/object-table/hooks/__tests__/useTableSorting.test.js.map +1 -1
  451. package/build/esm/object-table/hooks/useColumnDefs.js +16 -3
  452. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  453. package/build/esm/object-table/hooks/useColumnResize.js +45 -0
  454. package/build/esm/object-table/hooks/useColumnResize.js.map +1 -0
  455. package/build/esm/object-table/hooks/useColumnVisibility.js +52 -20
  456. package/build/esm/object-table/hooks/useColumnVisibility.js.map +1 -1
  457. package/build/esm/object-table/hooks/useEditableTable.js +66 -0
  458. package/build/esm/object-table/hooks/useEditableTable.js.map +1 -0
  459. package/build/esm/object-table/hooks/useObjectTableData.js +37 -7
  460. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  461. package/build/esm/object-table/hooks/useRowSelection.js +31 -10
  462. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  463. package/build/esm/object-table/hooks/useSelectionColumn.js +15 -6
  464. package/build/esm/object-table/hooks/useSelectionColumn.js.map +1 -1
  465. package/build/esm/object-table/utils/getCellId.js +20 -0
  466. package/build/esm/object-table/utils/getCellId.js.map +1 -0
  467. package/build/esm/object-table/utils/types.js +2 -0
  468. package/build/esm/object-table/utils/types.js.map +1 -0
  469. package/build/esm/public/experimental.js +2 -0
  470. package/build/esm/public/experimental.js.map +1 -1
  471. package/build/esm/shared/ErrorBoundary.js +62 -0
  472. package/build/esm/shared/ErrorBoundary.js.map +1 -0
  473. package/build/esm/shared/ErrorBoundary.module.css +55 -0
  474. package/build/types/base-components/action-button/ActionButton.d.ts +5 -0
  475. package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -0
  476. package/build/types/base-components/combobox/Combobox.d.ts +52 -0
  477. package/build/types/base-components/combobox/Combobox.d.ts.map +1 -0
  478. package/build/types/base-components/dialog/Dialog.d.ts +10 -0
  479. package/build/types/base-components/dialog/Dialog.d.ts.map +1 -0
  480. package/build/types/base-components/draggable-list/DraggableList.d.ts +17 -0
  481. package/build/types/base-components/draggable-list/DraggableList.d.ts.map +1 -0
  482. package/build/types/base-components/search-bar/SearchBar.d.ts +11 -0
  483. package/build/types/base-components/search-bar/SearchBar.d.ts.map +1 -0
  484. package/build/types/base-components/select/Select.d.ts +34 -0
  485. package/build/types/base-components/select/Select.d.ts.map +1 -0
  486. package/build/types/base-components/switch/Switch.d.ts +10 -0
  487. package/build/types/base-components/switch/Switch.d.ts.map +1 -0
  488. package/build/types/filter-list/FilterListApi.d.ts +62 -17
  489. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  490. package/build/types/filter-list/FilterListItemApi.d.ts +101 -53
  491. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  492. package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts +1 -0
  493. package/build/types/filter-list/__tests__/LinkedPropertyInput.test.d.ts.map +1 -0
  494. package/build/types/filter-list/__tests__/dateUtils.test.d.ts +1 -0
  495. package/build/types/filter-list/__tests__/dateUtils.test.d.ts.map +1 -0
  496. package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts +1 -0
  497. package/build/types/filter-list/__tests__/filterStateToWhereClause.test.d.ts.map +1 -0
  498. package/build/types/filter-list/__tests__/getFilterKey.test.d.ts +1 -0
  499. package/build/types/filter-list/__tests__/getFilterKey.test.d.ts.map +1 -0
  500. package/build/types/filter-list/__tests__/testUtils.d.ts +65 -0
  501. package/build/types/filter-list/__tests__/testUtils.d.ts.map +1 -0
  502. package/build/types/filter-list/base/FilterInput.d.ts +15 -0
  503. package/build/types/filter-list/base/FilterInput.d.ts.map +1 -0
  504. package/build/types/filter-list/base/FilterList.d.ts +4 -0
  505. package/build/types/filter-list/base/FilterList.d.ts.map +1 -0
  506. package/build/types/filter-list/base/FilterListContent.d.ts +16 -0
  507. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -0
  508. package/build/types/filter-list/base/FilterListHeader.d.ts +14 -0
  509. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -0
  510. package/build/types/filter-list/base/FilterListItem.d.ts +18 -0
  511. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -0
  512. package/build/types/filter-list/base/index.d.ts +5 -0
  513. package/build/types/filter-list/base/index.d.ts.map +1 -0
  514. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +21 -0
  515. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -0
  516. package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts +13 -0
  517. package/build/types/filter-list/base/inputs/ContainsTextInput.d.ts.map +1 -0
  518. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +22 -0
  519. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -0
  520. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts +21 -0
  521. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +1 -0
  522. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +22 -0
  523. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -0
  524. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts +12 -0
  525. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -0
  526. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +24 -0
  527. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -0
  528. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +21 -0
  529. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -0
  530. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +22 -0
  531. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -0
  532. package/build/types/filter-list/base/inputs/RangeInput.d.ts +37 -0
  533. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -0
  534. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +13 -0
  535. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -0
  536. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +24 -0
  537. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -0
  538. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +24 -0
  539. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -0
  540. package/build/types/filter-list/base/inputs/TimelineInput.d.ts +11 -0
  541. package/build/types/filter-list/base/inputs/TimelineInput.d.ts.map +1 -0
  542. package/build/types/filter-list/base/inputs/ToggleInput.d.ts +10 -0
  543. package/build/types/filter-list/base/inputs/ToggleInput.d.ts.map +1 -0
  544. package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts +16 -0
  545. package/build/types/filter-list/base/inputs/createHistogramBuckets.d.ts.map +1 -0
  546. package/build/types/filter-list/base/inputs/dateUtils.d.ts +17 -0
  547. package/build/types/filter-list/base/inputs/dateUtils.d.ts.map +1 -0
  548. package/build/types/filter-list/base/inputs/index.d.ts +8 -0
  549. package/build/types/filter-list/base/inputs/index.d.ts.map +1 -0
  550. package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts +1 -0
  551. package/build/types/filter-list/hooks/__tests__/useFilterListState.test.d.ts.map +1 -0
  552. package/build/types/filter-list/hooks/useFilterListState.d.ts +11 -0
  553. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -0
  554. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +20 -0
  555. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -0
  556. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +56 -0
  557. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +1 -0
  558. package/build/types/filter-list/types/CustomRendererTypes.d.ts +76 -0
  559. package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -0
  560. package/build/types/filter-list/types/FilterPanelTypes.d.ts +18 -0
  561. package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +1 -0
  562. package/build/types/filter-list/types/KeywordSearchTypes.d.ts +56 -0
  563. package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -0
  564. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +89 -0
  565. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -0
  566. package/build/types/filter-list/types/index.d.ts +5 -0
  567. package/build/types/filter-list/types/index.d.ts.map +1 -0
  568. package/build/types/filter-list/utils/aggregationHelpers.d.ts +9 -0
  569. package/build/types/filter-list/utils/aggregationHelpers.d.ts.map +1 -0
  570. package/build/types/filter-list/utils/assertUnreachable.d.ts +6 -0
  571. package/build/types/filter-list/utils/assertUnreachable.d.ts.map +1 -0
  572. package/build/types/filter-list/utils/coerceFilterValue.d.ts +11 -0
  573. package/build/types/filter-list/utils/coerceFilterValue.d.ts.map +1 -0
  574. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +16 -0
  575. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -0
  576. package/build/types/filter-list/utils/filterValues.d.ts +5 -0
  577. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -0
  578. package/build/types/filter-list/utils/getFilterKey.d.ts +3 -0
  579. package/build/types/filter-list/utils/getFilterKey.d.ts.map +1 -0
  580. package/build/types/object-table/ColumnConfigDialog.d.ts +18 -0
  581. package/build/types/object-table/ColumnConfigDialog.d.ts.map +1 -0
  582. package/build/types/object-table/DefaultCellRenderer.d.ts +3 -0
  583. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -0
  584. package/build/types/object-table/EditableCell.d.ts +22 -0
  585. package/build/types/object-table/EditableCell.d.ts.map +1 -0
  586. package/build/types/object-table/LoadingStateTable.d.ts.map +1 -1
  587. package/build/types/object-table/MultiColumnSortDialog.d.ts +15 -0
  588. package/build/types/object-table/MultiColumnSortDialog.d.ts.map +1 -0
  589. package/build/types/object-table/ObjectTable.d.ts +1 -1
  590. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  591. package/build/types/object-table/ObjectTableApi.d.ts +89 -8
  592. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  593. package/build/types/object-table/SortableItemsList.d.ts +13 -0
  594. package/build/types/object-table/SortableItemsList.d.ts.map +1 -0
  595. package/build/types/object-table/Table.d.ts +21 -1
  596. package/build/types/object-table/Table.d.ts.map +1 -1
  597. package/build/types/object-table/TableBody.d.ts +4 -1
  598. package/build/types/object-table/TableBody.d.ts.map +1 -1
  599. package/build/types/object-table/TableEditContainer.d.ts +9 -0
  600. package/build/types/object-table/TableEditContainer.d.ts.map +1 -0
  601. package/build/types/object-table/TableHeader.d.ts +3 -1
  602. package/build/types/object-table/TableHeader.d.ts.map +1 -1
  603. package/build/types/object-table/TableHeaderWithPopover.d.ts +30 -6
  604. package/build/types/object-table/TableHeaderWithPopover.d.ts.map +1 -1
  605. package/build/types/object-table/TableRow.d.ts +5 -1
  606. package/build/types/object-table/TableRow.d.ts.map +1 -1
  607. package/build/types/object-table/hooks/__tests__/useEditableTable.test.d.ts +1 -0
  608. package/build/types/object-table/hooks/__tests__/useEditableTable.test.d.ts.map +1 -0
  609. package/build/types/object-table/hooks/useColumnDefs.d.ts.map +1 -1
  610. package/build/types/object-table/hooks/useColumnResize.d.ts +10 -0
  611. package/build/types/object-table/hooks/useColumnResize.d.ts.map +1 -0
  612. package/build/types/object-table/hooks/useColumnVisibility.d.ts +18 -7
  613. package/build/types/object-table/hooks/useColumnVisibility.d.ts.map +1 -1
  614. package/build/types/object-table/hooks/useEditableTable.d.ts +17 -0
  615. package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -0
  616. package/build/types/object-table/hooks/useObjectTableData.d.ts +6 -5
  617. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  618. package/build/types/object-table/hooks/useRowSelection.d.ts +5 -4
  619. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  620. package/build/types/object-table/utils/getCellId.d.ts +2 -0
  621. package/build/types/object-table/utils/getCellId.d.ts.map +1 -0
  622. package/build/types/object-table/utils/types.d.ts +36 -0
  623. package/build/types/object-table/utils/types.d.ts.map +1 -0
  624. package/build/types/public/experimental.d.ts +6 -2
  625. package/build/types/public/experimental.d.ts.map +1 -1
  626. package/build/types/shared/ErrorBoundary.d.ts +19 -0
  627. package/build/types/shared/ErrorBoundary.d.ts.map +1 -0
  628. package/package.json +16 -8
@@ -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":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,UAAU,EAAEC,OAAO,QAAQ,wBAAwB;AAC5D,SAASC,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,QAAQ;AAE7C,SAASC,mBAAmB,QAAQ,2BAA2B;AAE/D,MAAMC,cAAc,GAAG;EACrBC,IAAI,EAAE,QAAQ;EACdC,OAAO,EAAE;AACX,CAAyC;AAKzCN,QAAQ,CAACG,mBAAmB,EAAE,MAAM;EAClCD,EAAE,CAAC,uEAAuE,EAAE,MAAM;IAChF,MAAM;MAAEK;IAAO,CAAC,GAAGT,UAAU,CAAC,MAC5BK,mBAAmB,CAAC;MAClBK,iBAAiB,EAAEC;IACrB,CAAC,CACH,CAAC;IAEDR,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACC,aAAa,CAAC,CAAC;EACxC,CAAC,CAAC;EAEFT,EAAE,CAAC,oFAAoF,EAAE,MAAM;IAC7F,MAAMM,iBAA8D,GAAG,CACrE;MACEI,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAyB;IAC5D,CAAC,EACD;MACED,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAA0B;IAC7D,CAAC,CACF;IAED,MAAM;MAAEN;IAAO,CAAC,GAAGT,UAAU,CAAC,MAC5BK,mBAAmB,CAAC;MAClBK;IACF,CAAC,CACH,CAAC;IAEDP,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACI,OAAO,CAAC,CAAC,CAAC,CAAC;EACpC,CAAC,CAAC;EAEFZ,EAAE,CAAC,6DAA6D,EAAE,YAAY;IAM5E,MAAMM,iBAML,GAAG,CACF;MACEI,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAyB,CAAC;MAC3DE,SAAS,EAAE;IACb,CAAC,EACD;MACEH,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAa,CAAC;MAC/CE,SAAS,EAAE;IACb,CAAC,EACD;MACEH,OAAO,EAAE;QAAEP,IAAI,EAAE,KAAK;QAAEQ,EAAE,EAAE,OAAO;QAAEG,OAAO,EArBxBA,CAAA,MAAO,CAAC,CAAC;MAqBgC,CAAC;MAC9DD,SAAS,EAAE;IACb,CAAC,EACD;MACEH,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAA0B;IAC7D,CAAC,CACF;IAED,MAAM;MAAEN;IAAO,CAAC,GAAGT,UAAU,CAAC,MAC5BK,mBAAmB,CAAC;MAClBK;IACF,CAAC,CACH,CAAC;IAED,MAAMT,OAAO,CAAC,MAAM;MAClBE,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACI,OAAO,CAAC;QAC7BG,IAAI,EAAE,IAAI;QACVC,UAAU,EAAE,KAAK;QACjBC,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFjB,EAAE,CAAC,wDAAwD,EAAE,YAAY;IAUvE,MAAM;MAAEK,MAAM;MAAEa;IAAS,CAAC,GAAGtB,UAAU,CACrC,CAAC;MAAEU;IAAkB,CAAC,KACpBL,mBAAmB,CAAC;MAClBK;IACF,CAAC,CAAC,EACJ;MACEa,YAAY,EAAE;QAAEb,iBAAiB,EAbjC,CACF;UACEI,OAAO,EAAE;YAAEP,IAAI,EAAE,UAAU;YAAEQ,EAAE,EAAE;UAAyB,CAAC;UAC3DE,SAAS,EAAE;QACb,CAAC;MAS6D;IAC9D,CACF,CAAC;IAED,MAAMhB,OAAO,CAAC,MAAM;MAClBE,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACI,OAAO,CAAC;QAC7BG,IAAI,EAAE;MACR,CAAC,CAAC;IACJ,CAAC,CAAC;IAeFG,QAAQ,CAAC;MAAEZ,iBAAiB,EAXxB,CACF;QACEI,OAAO,EAAE;UAAEP,IAAI,EAAE,UAAU;UAAEQ,EAAE,EAAE;QAAyB,CAAC;QAC3DE,SAAS,EAAE;MACb,CAAC,EACD;QACEH,OAAO,EAAE;UAAEP,IAAI,EAAE,UAAU;UAAEQ,EAAE,EAAE;QAA0B,CAAC;QAC5DE,SAAS,EAAE;MACb,CAAC;IAGoD,CAAC,CAAC;IAEzD,MAAMhB,OAAO,CAAC,MAAM;MAClBE,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACI,OAAO,CAAC;QAC7BG,IAAI,EAAE,KAAK;QACXK,KAAK,EAAE;MACT,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFpB,EAAE,CAAC,uEAAuE,EAAE,YAAY;IACtF,MAAMM,iBAA8D,GAAG,CACrE;MACEI,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAyB,CAAC;MAC3DE,SAAS,EAAE;IACb,CAAC,EACD;MACEH,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAA0B;IAC7D,CAAC,EACD;MACED,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAwB,CAAC;MAC1DE,SAAS,EAAE;IACb,CAAC,EACD;MACEH,OAAO,EAAE;QAAEP,IAAI,EAAE,UAAU;QAAEQ,EAAE,EAAE;MAAuB;IAC1D,CAAC,CACF;IAED,MAAM;MAAEN;IAAO,CAAC,GAAGT,UAAU,CAAC,MAC5BK,mBAAmB,CAAC;MAClBK;IACF,CAAC,CACH,CAAC;IAED,MAAMT,OAAO,CAAC,MAAM;MAClBE,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACI,OAAO,CAAC;QAC7BG,IAAI,EAAE,IAAI;QACVM,GAAG,EAAE;MACP,CAAC,CAAC;IACJ,CAAC,CAAC;;IAEF;IACAtB,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACc,GAAG,CAACC,cAAc,CAAC,OAAO,CAAC;IAClDxB,MAAM,CAACM,MAAM,CAACG,OAAO,CAAC,CAACc,GAAG,CAACC,cAAc,CAAC,IAAI,CAAC;EACjD,CAAC,CAAC;AACJ,CAAC,CAAC","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":[]}
@@ -0,0 +1,292 @@
1
+ /*
2
+ * Copyright 2025 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { act, renderHook } from "@testing-library/react";
18
+ import { describe, expect, it, vi } from "vitest";
19
+ import { getCellId } from "../../utils/getCellId.js";
20
+ import { useEditableTable } from "../useEditableTable.js";
21
+ function createMockObjectInstance(id, additionalProps = {}) {
22
+ return {
23
+ $apiName: "mock-object",
24
+ $primaryKey: id,
25
+ id,
26
+ ...additionalProps
27
+ };
28
+ }
29
+ describe("useEditableTable", () => {
30
+ it("adds cell to cellEdits when edited", () => {
31
+ const onCellValueChanged = vi.fn();
32
+ const {
33
+ result
34
+ } = renderHook(() => useEditableTable({
35
+ editMode: "always",
36
+ onCellValueChanged
37
+ }));
38
+ const cellId = getCellId({
39
+ rowId: "row-1",
40
+ columnId: "col-1"
41
+ });
42
+ const mockRowData = createMockObjectInstance("row-1", {
43
+ name: "Test"
44
+ });
45
+ const editEvent = {
46
+ rowId: "row-1",
47
+ columnId: "col-1",
48
+ newValue: "new value",
49
+ oldValue: "old value",
50
+ originalRowData: mockRowData
51
+ };
52
+ act(() => {
53
+ result.current.onCellEdit(cellId, editEvent);
54
+ });
55
+ expect(result.current.cellEdits).toEqual({
56
+ [cellId]: editEvent
57
+ });
58
+ expect(onCellValueChanged).toHaveBeenCalledWith(editEvent);
59
+ });
60
+ it("removes cell from cellEdits when edited back to original value", () => {
61
+ const onCellValueChanged = vi.fn();
62
+ const {
63
+ result
64
+ } = renderHook(() => useEditableTable({
65
+ editMode: "always",
66
+ onCellValueChanged
67
+ }));
68
+ const cellId = getCellId({
69
+ rowId: "row-1",
70
+ columnId: "col-1"
71
+ });
72
+ const mockRowData = createMockObjectInstance("row-1", {
73
+ name: "Test"
74
+ });
75
+
76
+ // First edit
77
+ const firstEdit = {
78
+ rowId: "row-1",
79
+ columnId: "col-1",
80
+ newValue: "new value",
81
+ oldValue: "original",
82
+ originalRowData: mockRowData
83
+ };
84
+ act(() => {
85
+ result.current.onCellEdit(cellId, firstEdit);
86
+ });
87
+ expect(result.current.cellEdits).toEqual({
88
+ [cellId]: firstEdit
89
+ });
90
+
91
+ // Edit back to original
92
+ const revertEdit = {
93
+ rowId: "row-1",
94
+ columnId: "col-1",
95
+ newValue: "original",
96
+ oldValue: "original",
97
+ originalRowData: mockRowData
98
+ };
99
+ act(() => {
100
+ result.current.onCellEdit(cellId, revertEdit);
101
+ });
102
+
103
+ // Should remove the cell from cellEdits
104
+ expect(result.current.cellEdits).toEqual({});
105
+ });
106
+ it("handles multiple cell edits", () => {
107
+ const {
108
+ result
109
+ } = renderHook(() => useEditableTable({
110
+ editMode: "always"
111
+ }));
112
+ const cellId1 = getCellId({
113
+ rowId: "row-1",
114
+ columnId: "col-1"
115
+ });
116
+ const cellId2 = getCellId({
117
+ rowId: "row-2",
118
+ columnId: "col-2"
119
+ });
120
+ const cellId3 = getCellId({
121
+ rowId: "row-3",
122
+ columnId: "col-3"
123
+ });
124
+ const edit1 = {
125
+ rowId: "row-1",
126
+ columnId: "col-1",
127
+ newValue: "new1",
128
+ oldValue: "old1",
129
+ originalRowData: createMockObjectInstance("row-1")
130
+ };
131
+ const edit2 = {
132
+ rowId: "row-2",
133
+ columnId: "col-2",
134
+ newValue: "new2",
135
+ oldValue: "old2",
136
+ originalRowData: createMockObjectInstance("row-2")
137
+ };
138
+ const edit3 = {
139
+ rowId: "row-3",
140
+ columnId: "col-3",
141
+ newValue: "new3",
142
+ oldValue: "old3",
143
+ originalRowData: createMockObjectInstance("row-3")
144
+ };
145
+ act(() => {
146
+ result.current.onCellEdit(cellId1, edit1);
147
+ result.current.onCellEdit(cellId2, edit2);
148
+ result.current.onCellEdit(cellId3, edit3);
149
+ });
150
+ expect(Object.keys(result.current.cellEdits).length).toBe(3);
151
+
152
+ // Edit one back to original
153
+ const revertEdit2 = {
154
+ rowId: "row-2",
155
+ columnId: "col-2",
156
+ newValue: "old2",
157
+ oldValue: "old2",
158
+ originalRowData: createMockObjectInstance("row-2")
159
+ };
160
+ act(() => {
161
+ result.current.onCellEdit(cellId2, revertEdit2);
162
+ });
163
+ expect(Object.keys(result.current.cellEdits).length).toBe(2);
164
+ expect(result.current.cellEdits[cellId2]).toBeUndefined();
165
+ });
166
+ it("clears all edits", () => {
167
+ const {
168
+ result
169
+ } = renderHook(() => useEditableTable({
170
+ editMode: "always"
171
+ }));
172
+ const cellId1 = getCellId({
173
+ rowId: "row-1",
174
+ columnId: "col-1"
175
+ });
176
+ const cellId2 = getCellId({
177
+ rowId: "row-2",
178
+ columnId: "col-2"
179
+ });
180
+ const edit1 = {
181
+ rowId: "row-1",
182
+ columnId: "col-1",
183
+ newValue: "new1",
184
+ oldValue: "old1",
185
+ originalRowData: createMockObjectInstance("row-1")
186
+ };
187
+ const edit2 = {
188
+ rowId: "row-2",
189
+ columnId: "col-2",
190
+ newValue: "new2",
191
+ oldValue: "old2",
192
+ originalRowData: createMockObjectInstance("row-2")
193
+ };
194
+ act(() => {
195
+ result.current.onCellEdit(cellId1, edit1);
196
+ result.current.onCellEdit(cellId2, edit2);
197
+ });
198
+ act(() => {
199
+ result.current.clearEdits();
200
+ });
201
+ expect(result.current.cellEdits).toEqual({});
202
+ });
203
+ it("handles submit edits", async () => {
204
+ const onSubmitEdits = vi.fn();
205
+ const {
206
+ result
207
+ } = renderHook(() => useEditableTable({
208
+ editMode: "always",
209
+ onSubmitEdits
210
+ }));
211
+ const cellId1 = getCellId({
212
+ rowId: "row-1",
213
+ columnId: "col-1"
214
+ });
215
+ const cellId2 = getCellId({
216
+ rowId: "row-2",
217
+ columnId: "col-2"
218
+ });
219
+ const edit1 = {
220
+ rowId: "row-1",
221
+ columnId: "col-1",
222
+ newValue: "new1",
223
+ oldValue: "old1",
224
+ originalRowData: createMockObjectInstance("row-1")
225
+ };
226
+ const edit2 = {
227
+ rowId: "row-2",
228
+ columnId: "col-2",
229
+ newValue: "new2",
230
+ oldValue: "old2",
231
+ originalRowData: createMockObjectInstance("row-2")
232
+ };
233
+ act(() => {
234
+ result.current.onCellEdit(cellId1, edit1);
235
+ result.current.onCellEdit(cellId2, edit2);
236
+ });
237
+ await act(async () => {
238
+ await result.current.onSubmitEdits?.();
239
+ });
240
+ expect(onSubmitEdits).toHaveBeenCalledWith([edit1, edit2]);
241
+ });
242
+ it("when submit edits is undefined, onSubmitEdits is undefined", async () => {
243
+ const {
244
+ result
245
+ } = renderHook(() => useEditableTable({
246
+ editMode: "always",
247
+ onSubmitEdits: undefined
248
+ }));
249
+ expect(result.current.onSubmitEdits).toBeUndefined();
250
+ });
251
+ it("when editMode is manual, isActive is false initially", () => {
252
+ const {
253
+ result
254
+ } = renderHook(() => useEditableTable({
255
+ editMode: "manual"
256
+ }));
257
+ expect(result.current.editMode.type).toBe("manual");
258
+ if (result.current.editMode.type === "manual") {
259
+ expect(result.current.editMode.isActive).toBe(false);
260
+ expect(result.current.editMode.setActive).toBeDefined();
261
+ act(() => {
262
+ result.current.editMode.type === "manual" && result.current.editMode.setActive(true);
263
+ });
264
+ expect(result.current.editMode.type === "manual" && result.current.editMode.isActive).toBe(true);
265
+ act(() => {
266
+ result.current.editMode.type === "manual" && result.current.editMode.setActive(false);
267
+ });
268
+ expect(result.current.editMode.type === "manual" && result.current.editMode.isActive).toBe(false);
269
+ }
270
+ });
271
+ it("when editMode is always, the type is always and isActive is true", () => {
272
+ const {
273
+ result
274
+ } = renderHook(() => useEditableTable({
275
+ editMode: "always"
276
+ }));
277
+ expect(result.current.editMode.type).toBe("always");
278
+ expect(result.current.editMode.isActive).toBe(true);
279
+ });
280
+ it("when editMode is manual with default settings, it starts as inactive", () => {
281
+ const {
282
+ result
283
+ } = renderHook(() => useEditableTable({
284
+ editMode: "manual"
285
+ }));
286
+ expect(result.current.editMode.type).toBe("manual");
287
+ if (result.current.editMode.type === "manual") {
288
+ expect(result.current.editMode.isActive).toBe(false);
289
+ }
290
+ });
291
+ });
292
+ //# sourceMappingURL=useEditableTable.test.js.map