@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
@@ -0,0 +1,63 @@
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
+ .singleDate {
18
+ display: flex;
19
+ flex-direction: column;
20
+ }
21
+
22
+ .dateContainer {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: var(--osdk-filter-select-container-gap);
26
+ }
27
+
28
+ .input {
29
+ flex: 1;
30
+ font-size: var(--osdk-typography-size-body-medium);
31
+ padding: var(--osdk-filter-input-padding);
32
+ border: var(--osdk-filter-input-border);
33
+ border-radius: var(--osdk-filter-input-border-radius);
34
+ background: var(--osdk-filter-input-bg);
35
+ color: var(--osdk-filter-input-color);
36
+
37
+ &:focus {
38
+ border-color: var(--osdk-filter-input-focus-border);
39
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
40
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
41
+ }
42
+ }
43
+
44
+ .clearButton {
45
+ display: flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+ padding: var(--osdk-filter-input-clear-padding);
49
+ border: none;
50
+ background: transparent;
51
+ cursor: pointer;
52
+ color: var(--osdk-filter-input-icon-color);
53
+ border-radius: var(--osdk-filter-input-clear-border-radius);
54
+ transition: background-color var(--osdk-filter-input-transition);
55
+
56
+ &:hover {
57
+ background: var(--osdk-filter-input-clear-bg-hover);
58
+ }
59
+
60
+ &:active {
61
+ background: var(--osdk-filter-input-clear-bg-active);
62
+ }
63
+ }
@@ -0,0 +1,9 @@
1
+ // CSS Module proxy for SingleDateInput.module.css
2
+ const styles = {
3
+ "singleDate": "SingleDateInput-module__singleDate___vuPq29dO",
4
+ "dateContainer": "SingleDateInput-module__dateContainer___8nbNGHTi",
5
+ "input": "SingleDateInput-module__input___SijNvgB7",
6
+ "clearButton": "SingleDateInput-module__clearButton___q1-uPMWI"
7
+ };
8
+
9
+ export default styles;
@@ -0,0 +1,95 @@
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 { Button } from "@base-ui/react/button";
18
+ import { Cross } from "@blueprintjs/icons";
19
+ import classnames from "classnames";
20
+ import React, { memo, useCallback, useMemo } from "react";
21
+ import { Select } from "../../../base-components/select/Select.js";
22
+ import { usePropertyAggregation } from "../../hooks/usePropertyAggregation.js";
23
+ import sharedStyles from "./shared.module.css.js";
24
+ import styles from "./SingleSelectInput.module.css.js";
25
+ function SingleSelectInputInner({
26
+ objectType,
27
+ propertyKey,
28
+ selectedValue,
29
+ onChange,
30
+ whereClause,
31
+ className,
32
+ style,
33
+ placeholder = "Select a value...",
34
+ showClearButton = true,
35
+ showCounts = false
36
+ }) {
37
+ const {
38
+ data: values,
39
+ isLoading,
40
+ error
41
+ } = usePropertyAggregation(objectType, propertyKey, {
42
+ where: whereClause
43
+ });
44
+ const handleValueChange = useCallback(value => {
45
+ onChange(value ?? undefined);
46
+ }, [onChange]);
47
+ const handleClear = useCallback(() => {
48
+ onChange(undefined);
49
+ }, [onChange]);
50
+ const items = useMemo(() => {
51
+ const result = {};
52
+ for (const {
53
+ value,
54
+ count
55
+ } of values) {
56
+ result[value] = showCounts ? `${value} (${count.toLocaleString()})` : value;
57
+ }
58
+ return result;
59
+ }, [values, showCounts]);
60
+ return /*#__PURE__*/React.createElement("div", {
61
+ className: classnames(styles.singleSelect, className),
62
+ style: style,
63
+ "data-loading": isLoading
64
+ }, isLoading && /*#__PURE__*/React.createElement("div", {
65
+ className: sharedStyles.loadingMessage
66
+ }, "Loading options..."), error && /*#__PURE__*/React.createElement("div", {
67
+ className: sharedStyles.errorMessage
68
+ }, "Error loading options: ", error.message), !isLoading && !error && values.length === 0 && /*#__PURE__*/React.createElement("div", {
69
+ className: sharedStyles.emptyMessage
70
+ }, "No options available"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement("div", {
71
+ className: styles.selectContainer
72
+ }, /*#__PURE__*/React.createElement(Select.Root, {
73
+ value: selectedValue ?? null,
74
+ onValueChange: handleValueChange,
75
+ items: items
76
+ }, /*#__PURE__*/React.createElement(Select.Trigger, {
77
+ placeholder: placeholder,
78
+ "aria-label": `Select ${propertyKey}`
79
+ }), /*#__PURE__*/React.createElement(Select.Portal, null, /*#__PURE__*/React.createElement(Select.Positioner, null, /*#__PURE__*/React.createElement(Select.Popup, null, values.map(({
80
+ value,
81
+ count
82
+ }) => /*#__PURE__*/React.createElement(Select.Item, {
83
+ key: value,
84
+ value: value
85
+ }, showCounts ? `${value} (${count.toLocaleString()})` : value)))))), showClearButton && selectedValue !== undefined && /*#__PURE__*/React.createElement(Button, {
86
+ type: "button",
87
+ className: styles.clearButton,
88
+ onClick: handleClear,
89
+ "aria-label": "Clear selection"
90
+ }, /*#__PURE__*/React.createElement(Cross, {
91
+ color: "currentColor"
92
+ }))));
93
+ }
94
+ export const SingleSelectInput = /*#__PURE__*/memo(SingleSelectInputInner);
95
+ //# sourceMappingURL=SingleSelectInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SingleSelectInput.js","names":["Button","Cross","classnames","React","memo","useCallback","useMemo","Select","usePropertyAggregation","sharedStyles","styles","SingleSelectInputInner","objectType","propertyKey","selectedValue","onChange","whereClause","className","style","placeholder","showClearButton","showCounts","data","values","isLoading","error","where","handleValueChange","value","undefined","handleClear","items","result","count","toLocaleString","createElement","singleSelect","loadingMessage","errorMessage","message","length","emptyMessage","selectContainer","Root","onValueChange","Trigger","Portal","Positioner","Popup","map","Item","key","type","clearButton","onClick","color","SingleSelectInput"],"sources":["SingleSelectInput.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 { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport type {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Select } from \"../../../base-components/select/Select.js\";\nimport { usePropertyAggregation } from \"../../hooks/usePropertyAggregation.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./SingleSelectInput.module.css\";\n\ninterface SingleSelectInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n selectedValue: string | undefined;\n onChange: (value: string | undefined) => void;\n objectSet?: ObjectSet<Q>;\n whereClause?: WhereClause<Q>;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: string;\n showClearButton?: boolean;\n showCounts?: boolean;\n}\n\nfunction SingleSelectInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>({\n objectType,\n propertyKey,\n selectedValue,\n onChange,\n whereClause,\n className,\n style,\n placeholder = \"Select a value...\",\n showClearButton = true,\n showCounts = false,\n}: SingleSelectInputProps<Q, K>): React.ReactElement {\n const { data: values, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n { where: whereClause },\n );\n\n const handleValueChange = useCallback(\n (value: string | null) => {\n onChange(value ?? undefined);\n },\n [onChange],\n );\n\n const handleClear = useCallback(() => {\n onChange(undefined);\n }, [onChange]);\n\n const items = useMemo(() => {\n const result: Record<string, string> = {};\n for (const { value, count } of values) {\n result[value] = showCounts\n ? `${value} (${count.toLocaleString()})`\n : value;\n }\n return result;\n }, [values, showCounts]);\n\n return (\n <div\n className={classnames(styles.singleSelect, className)}\n style={style}\n data-loading={isLoading}\n >\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Loading options...\n </div>\n )}\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading options: {error.message}\n </div>\n )}\n\n {!isLoading && !error && values.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n No options available\n </div>\n )}\n\n {(values.length > 0 || isLoading) && (\n <div className={styles.selectContainer}>\n <Select.Root<string>\n value={selectedValue ?? null}\n onValueChange={handleValueChange}\n items={items}\n >\n <Select.Trigger\n placeholder={placeholder}\n aria-label={`Select ${propertyKey}`}\n />\n <Select.Portal>\n <Select.Positioner>\n <Select.Popup>\n {values.map(({ value, count }) => (\n <Select.Item key={value} value={value}>\n {showCounts\n ? `${value} (${count.toLocaleString()})`\n : value}\n </Select.Item>\n ))}\n </Select.Popup>\n </Select.Positioner>\n </Select.Portal>\n </Select.Root>\n {showClearButton && selectedValue !== undefined && (\n <Button\n type=\"button\"\n className={styles.clearButton}\n onClick={handleClear}\n aria-label=\"Clear selection\"\n >\n <Cross color=\"currentColor\" />\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport const SingleSelectInput = memo(\n SingleSelectInputInner,\n) as typeof SingleSelectInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,55 @@
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
+ .singleSelect {
18
+ display: flex;
19
+ flex-direction: column;
20
+ }
21
+
22
+ .selectContainer {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: var(--osdk-filter-select-container-gap);
26
+ position: relative;
27
+ }
28
+
29
+ .clearButton {
30
+ display: flex;
31
+ align-items: center;
32
+ justify-content: center;
33
+ padding: var(--osdk-filter-select-clear-padding);
34
+ border: none;
35
+ background: transparent;
36
+ cursor: pointer;
37
+ color: var(--osdk-filter-select-clear-color);
38
+ border-radius: var(--osdk-filter-select-clear-border-radius);
39
+ transition: color var(--osdk-filter-select-clear-transition),
40
+ background-color var(--osdk-filter-select-clear-transition);
41
+
42
+ &:hover {
43
+ color: var(--osdk-filter-select-clear-color-hover);
44
+ background-color: var(--osdk-filter-select-clear-bg-hover);
45
+ }
46
+
47
+ &:focus-visible {
48
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
49
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
50
+ }
51
+
52
+ @media (prefers-reduced-motion: reduce) {
53
+ transition: none;
54
+ }
55
+ }
@@ -0,0 +1,8 @@
1
+ // CSS Module proxy for SingleSelectInput.module.css
2
+ const styles = {
3
+ "singleSelect": "SingleSelectInput-module__singleSelect___c08JWaD4",
4
+ "selectContainer": "SingleSelectInput-module__selectContainer___QBp8RBCT",
5
+ "clearButton": "SingleSelectInput-module__clearButton___mnHKL2FB"
6
+ };
7
+
8
+ export default styles;
@@ -0,0 +1,141 @@
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 { Button } from "@base-ui/react/button";
18
+ import classnames from "classnames";
19
+ import React, { memo, useCallback, useMemo, useState } from "react";
20
+ import { Combobox } from "../../../base-components/combobox/Combobox.js";
21
+ import { usePropertyAggregation } from "../../hooks/usePropertyAggregation.js";
22
+ import sharedStyles from "./shared.module.css.js";
23
+ import styles from "./TextTagsInput.module.css.js";
24
+ const TAG_SEPARATOR_PATTERN = /[,\n]/;
25
+ const TagItem = /*#__PURE__*/memo(function ({
26
+ tag,
27
+ onRemove
28
+ }) {
29
+ const handleRemove = useCallback(() => {
30
+ onRemove(tag);
31
+ }, [tag, onRemove]);
32
+ return /*#__PURE__*/React.createElement("span", {
33
+ className: sharedStyles.tag
34
+ }, tag, /*#__PURE__*/React.createElement(Button, {
35
+ type: "button",
36
+ className: sharedStyles.tagRemove,
37
+ onClick: handleRemove,
38
+ "aria-label": `Remove ${tag}`
39
+ }, "\xD7"));
40
+ });
41
+ function TextTagsInputInner({
42
+ objectType,
43
+ propertyKey,
44
+ tags,
45
+ onChange,
46
+ whereClause,
47
+ className,
48
+ style,
49
+ placeholder = "Add a tag...",
50
+ allowCustomTags = true,
51
+ suggestionLimit = 10
52
+ }) {
53
+ const [inputValue, setInputValue] = useState("");
54
+ const {
55
+ data: suggestions,
56
+ isLoading,
57
+ error
58
+ } = usePropertyAggregation(objectType, propertyKey, {
59
+ limit: suggestionLimit ?? 0,
60
+ where: whereClause
61
+ });
62
+ const filteredSuggestions = useMemo(() => {
63
+ if (!suggestionLimit) return [];
64
+ const lowerInput = inputValue.toLowerCase();
65
+ return suggestions.filter(s => (!inputValue.trim() || s.value.toLowerCase().includes(lowerInput)) && !tags.includes(s.value)).slice(0, suggestionLimit);
66
+ }, [suggestions, inputValue, tags, suggestionLimit]);
67
+ const addTag = useCallback(tag => {
68
+ const trimmedTag = tag.trim();
69
+ if (trimmedTag && !tags.includes(trimmedTag)) {
70
+ onChange([...tags, trimmedTag]);
71
+ }
72
+ setInputValue("");
73
+ }, [tags, onChange]);
74
+ const removeTag = useCallback(tag => {
75
+ onChange(tags.filter(t => t !== tag));
76
+ }, [tags, onChange]);
77
+ const handleValueChange = useCallback(newTags => {
78
+ onChange(newTags ?? []);
79
+ }, [onChange]);
80
+ const handleInputValueChange = useCallback(value => {
81
+ setInputValue(value);
82
+ }, []);
83
+ const handleKeyDown = useCallback(e => {
84
+ if (e.key === "Enter" && inputValue.trim()) {
85
+ if (filteredSuggestions.length > 0) {
86
+ return;
87
+ }
88
+ e.preventDefault();
89
+ if (allowCustomTags) {
90
+ addTag(inputValue);
91
+ }
92
+ } else if (e.key === "Backspace" && !inputValue && tags.length > 0) {
93
+ removeTag(tags[tags.length - 1]);
94
+ }
95
+ }, [inputValue, tags, addTag, removeTag, allowCustomTags, filteredSuggestions]);
96
+ const handlePaste = useCallback(e => {
97
+ const pastedText = e.clipboardData.getData("text");
98
+ if (TAG_SEPARATOR_PATTERN.test(pastedText)) {
99
+ e.preventDefault();
100
+ const newTags = pastedText.split(TAG_SEPARATOR_PATTERN).map(t => t.trim()).filter(t => t && !tags.includes(t));
101
+ if (newTags.length > 0) {
102
+ onChange([...tags, ...newTags]);
103
+ }
104
+ }
105
+ }, [tags, onChange]);
106
+ return /*#__PURE__*/React.createElement("div", {
107
+ className: classnames(styles.textTags, className),
108
+ style: style,
109
+ "data-loading": isLoading
110
+ }, error && /*#__PURE__*/React.createElement("div", {
111
+ className: sharedStyles.errorMessage
112
+ }, "Error loading suggestions: ", error.message), /*#__PURE__*/React.createElement(Combobox.Root, {
113
+ multiple: true,
114
+ value: tags,
115
+ onValueChange: handleValueChange,
116
+ inputValue: inputValue,
117
+ onInputValueChange: handleInputValueChange
118
+ }, tags.length > 0 && /*#__PURE__*/React.createElement("div", {
119
+ className: sharedStyles.tagContainer
120
+ }, tags.map(tag => /*#__PURE__*/React.createElement(TagItem, {
121
+ key: tag,
122
+ tag: tag,
123
+ onRemove: removeTag
124
+ }))), /*#__PURE__*/React.createElement(Combobox.Input, {
125
+ className: styles.input,
126
+ placeholder: tags.length > 0 ? "" : placeholder,
127
+ onKeyDown: handleKeyDown,
128
+ onPaste: handlePaste,
129
+ "aria-label": `Add ${propertyKey} tag`
130
+ }), /*#__PURE__*/React.createElement(Combobox.Portal, null, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, filteredSuggestions.length === 0 ? allowCustomTags && inputValue.trim() ? /*#__PURE__*/React.createElement(Combobox.Empty, null, "Press Enter to add \"", inputValue, "\"") : /*#__PURE__*/React.createElement(Combobox.Empty, null, suggestionLimit ? "No suggestions" : "Type to add a tag") : filteredSuggestions.map(({
131
+ value,
132
+ count
133
+ }) => /*#__PURE__*/React.createElement(Combobox.Item, {
134
+ key: value,
135
+ value: value
136
+ }, value, " (", count.toLocaleString(), ")")))))), isLoading && !!suggestionLimit && /*#__PURE__*/React.createElement("div", {
137
+ className: sharedStyles.loadingMessage
138
+ }, "Loading suggestions..."));
139
+ }
140
+ export const TextTagsInput = /*#__PURE__*/memo(TextTagsInputInner);
141
+ //# sourceMappingURL=TextTagsInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextTagsInput.js","names":["Button","classnames","React","memo","useCallback","useMemo","useState","Combobox","usePropertyAggregation","sharedStyles","styles","TAG_SEPARATOR_PATTERN","TagItem","tag","onRemove","handleRemove","createElement","className","type","tagRemove","onClick","TextTagsInputInner","objectType","propertyKey","tags","onChange","whereClause","style","placeholder","allowCustomTags","suggestionLimit","inputValue","setInputValue","data","suggestions","isLoading","error","limit","where","filteredSuggestions","lowerInput","toLowerCase","filter","s","trim","value","includes","slice","addTag","trimmedTag","removeTag","t","handleValueChange","newTags","handleInputValueChange","handleKeyDown","e","key","length","preventDefault","handlePaste","pastedText","clipboardData","getData","test","split","map","textTags","errorMessage","message","Root","multiple","onValueChange","onInputValueChange","tagContainer","Input","input","onKeyDown","onPaste","Portal","Positioner","Popup","Empty","count","Item","toLocaleString","loadingMessage","TextTagsInput"],"sources":["TextTagsInput.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 { Button } from \"@base-ui/react/button\";\nimport type {\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { Combobox } from \"../../../base-components/combobox/Combobox.js\";\nimport { usePropertyAggregation } from \"../../hooks/usePropertyAggregation.js\";\nimport sharedStyles from \"./shared.module.css\";\nimport styles from \"./TextTagsInput.module.css\";\n\nconst TAG_SEPARATOR_PATTERN = /[,\\n]/;\n\ninterface TagItemProps {\n tag: string;\n onRemove: (tag: string) => void;\n}\n\nconst TagItem = memo(function TagItem({ tag, onRemove }: TagItemProps) {\n const handleRemove = useCallback(() => {\n onRemove(tag);\n }, [tag, onRemove]);\n\n return (\n <span className={sharedStyles.tag}>\n {tag}\n <Button\n type=\"button\"\n className={sharedStyles.tagRemove}\n onClick={handleRemove}\n aria-label={`Remove ${tag}`}\n >\n ×\n </Button>\n </span>\n );\n});\n\ninterface TextTagsInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n tags: string[];\n onChange: (tags: string[]) => void;\n objectSet?: ObjectSet<Q>;\n whereClause?: WhereClause<Q>;\n className?: string;\n style?: React.CSSProperties;\n placeholder?: string;\n allowCustomTags?: boolean;\n suggestionLimit?: number;\n}\n\nfunction TextTagsInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>({\n objectType,\n propertyKey,\n tags,\n onChange,\n whereClause,\n className,\n style,\n placeholder = \"Add a tag...\",\n allowCustomTags = true,\n suggestionLimit = 10,\n}: TextTagsInputProps<Q, K>): React.ReactElement {\n const [inputValue, setInputValue] = useState(\"\");\n\n const { data: suggestions, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n { limit: suggestionLimit ?? 0, where: whereClause },\n );\n\n const filteredSuggestions = useMemo(() => {\n if (!suggestionLimit) return [];\n const lowerInput = inputValue.toLowerCase();\n return suggestions\n .filter(\n (s) =>\n (!inputValue.trim()\n || s.value.toLowerCase().includes(lowerInput))\n && !tags.includes(s.value),\n )\n .slice(0, suggestionLimit);\n }, [suggestions, inputValue, tags, suggestionLimit]);\n\n const addTag = useCallback(\n (tag: string) => {\n const trimmedTag = tag.trim();\n if (trimmedTag && !tags.includes(trimmedTag)) {\n onChange([...tags, trimmedTag]);\n }\n setInputValue(\"\");\n },\n [tags, onChange],\n );\n\n const removeTag = useCallback(\n (tag: string) => {\n onChange(tags.filter((t) => t !== tag));\n },\n [tags, onChange],\n );\n\n const handleValueChange = useCallback(\n (newTags: string[] | null) => {\n onChange(newTags ?? []);\n },\n [onChange],\n );\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n },\n [],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue.trim()) {\n if (filteredSuggestions.length > 0) {\n return;\n }\n e.preventDefault();\n if (allowCustomTags) {\n addTag(inputValue);\n }\n } else if (e.key === \"Backspace\" && !inputValue && tags.length > 0) {\n removeTag(tags[tags.length - 1]);\n }\n },\n [inputValue, tags, addTag, removeTag, allowCustomTags, filteredSuggestions],\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedText = e.clipboardData.getData(\"text\");\n if (TAG_SEPARATOR_PATTERN.test(pastedText)) {\n e.preventDefault();\n const newTags = pastedText\n .split(TAG_SEPARATOR_PATTERN)\n .map((t) => t.trim())\n .filter((t) => t && !tags.includes(t));\n if (newTags.length > 0) {\n onChange([...tags, ...newTags]);\n }\n }\n },\n [tags, onChange],\n );\n\n return (\n <div\n className={classnames(styles.textTags, className)}\n style={style}\n data-loading={isLoading}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading suggestions: {error.message}\n </div>\n )}\n\n <Combobox.Root<string, true>\n multiple\n value={tags}\n onValueChange={handleValueChange}\n inputValue={inputValue}\n onInputValueChange={handleInputValueChange}\n >\n {tags.length > 0 && (\n <div className={sharedStyles.tagContainer}>\n {tags.map((tag) => (\n <TagItem key={tag} tag={tag} onRemove={removeTag} />\n ))}\n </div>\n )}\n\n <Combobox.Input\n className={styles.input}\n placeholder={tags.length > 0 ? \"\" : placeholder}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n aria-label={`Add ${propertyKey} tag`}\n />\n\n <Combobox.Portal>\n <Combobox.Positioner>\n <Combobox.Popup>\n {filteredSuggestions.length === 0\n ? (\n allowCustomTags && inputValue.trim()\n ? (\n <Combobox.Empty>\n Press Enter to add \"{inputValue}\"\n </Combobox.Empty>\n )\n : (\n <Combobox.Empty>\n {suggestionLimit\n ? \"No suggestions\"\n : \"Type to add a tag\"}\n </Combobox.Empty>\n )\n )\n : filteredSuggestions.map(({ value, count }) => (\n <Combobox.Item key={value} value={value}>\n {value} ({count.toLocaleString()})\n </Combobox.Item>\n ))}\n </Combobox.Popup>\n </Combobox.Positioner>\n </Combobox.Portal>\n </Combobox.Root>\n\n {isLoading && !!suggestionLimit && (\n <div className={sharedStyles.loadingMessage}>\n Loading suggestions...\n </div>\n )}\n </div>\n );\n}\n\nexport const TextTagsInput = memo(\n TextTagsInputInner,\n) as typeof TextTagsInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
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
+ .textTags {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--osdk-filter-texttags-gap);
21
+ }
22
+
23
+ .input {
24
+ flex: 1;
25
+ }
@@ -0,0 +1,7 @@
1
+ // CSS Module proxy for TextTagsInput.module.css
2
+ const styles = {
3
+ "textTags": "TextTagsInput-module__textTags___3hHCVJWH",
4
+ "input": "TextTagsInput-module__input___Z1Od1KUG"
5
+ };
6
+
7
+ export default styles;
@@ -0,0 +1,74 @@
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 { Button } from "@base-ui/react/button";
18
+ import { Input } from "@base-ui/react/input";
19
+ import classnames from "classnames";
20
+ import React, { memo, useCallback, useMemo } from "react";
21
+ import { formatDateForDisplay, formatDateForInput, parseDateFromInput } from "./dateUtils.js";
22
+ import styles from "./TimelineInput.module.css.js";
23
+ function TimelineInputInner({
24
+ startDate,
25
+ endDate,
26
+ onChange,
27
+ className,
28
+ minDate,
29
+ maxDate
30
+ }) {
31
+ const handleStartChange = useCallback(e => {
32
+ const date = parseDateFromInput(e.target.value);
33
+ onChange(date, endDate);
34
+ }, [onChange, endDate]);
35
+ const handleEndChange = useCallback(e => {
36
+ const date = parseDateFromInput(e.target.value);
37
+ onChange(startDate, date);
38
+ }, [onChange, startDate]);
39
+ const handleClear = useCallback(() => {
40
+ onChange(undefined, undefined);
41
+ }, [onChange]);
42
+ const startInputMax = useMemo(() => endDate ?? maxDate, [endDate, maxDate]);
43
+ const endInputMin = useMemo(() => startDate ?? minDate, [startDate, minDate]);
44
+ return /*#__PURE__*/React.createElement("div", {
45
+ className: classnames(styles.timeline, className)
46
+ }, /*#__PURE__*/React.createElement("div", {
47
+ className: styles.labels
48
+ }, /*#__PURE__*/React.createElement("span", null, formatDateForDisplay(startDate, "—")), /*#__PURE__*/React.createElement("span", null, "to"), /*#__PURE__*/React.createElement("span", null, formatDateForDisplay(endDate, "—")), (startDate || endDate) && /*#__PURE__*/React.createElement(Button, {
49
+ type: "button",
50
+ className: styles.clearButton,
51
+ onClick: handleClear,
52
+ "aria-label": "Clear range"
53
+ }, "\xD7")), /*#__PURE__*/React.createElement("div", {
54
+ className: styles.brush
55
+ }, /*#__PURE__*/React.createElement(Input, {
56
+ type: "date",
57
+ className: styles.input,
58
+ value: formatDateForInput(startDate),
59
+ onChange: handleStartChange,
60
+ min: minDate ? formatDateForInput(minDate) : undefined,
61
+ max: startInputMax ? formatDateForInput(startInputMax) : undefined,
62
+ "aria-label": "Start date"
63
+ }), /*#__PURE__*/React.createElement("span", null, "\u2014"), /*#__PURE__*/React.createElement(Input, {
64
+ type: "date",
65
+ className: styles.input,
66
+ value: formatDateForInput(endDate),
67
+ onChange: handleEndChange,
68
+ min: endInputMin ? formatDateForInput(endInputMin) : undefined,
69
+ max: maxDate ? formatDateForInput(maxDate) : undefined,
70
+ "aria-label": "End date"
71
+ })));
72
+ }
73
+ export const TimelineInput = /*#__PURE__*/memo(TimelineInputInner);
74
+ //# sourceMappingURL=TimelineInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimelineInput.js","names":["Button","Input","classnames","React","memo","useCallback","useMemo","formatDateForDisplay","formatDateForInput","parseDateFromInput","styles","TimelineInputInner","startDate","endDate","onChange","className","minDate","maxDate","handleStartChange","e","date","target","value","handleEndChange","handleClear","undefined","startInputMax","endInputMin","createElement","timeline","labels","type","clearButton","onClick","brush","input","min","max","TimelineInput"],"sources":["TimelineInput.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 { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport {\n formatDateForDisplay,\n formatDateForInput,\n parseDateFromInput,\n} from \"./dateUtils.js\";\nimport styles from \"./TimelineInput.module.css\";\n\ninterface TimelineInputProps {\n startDate: Date | undefined;\n endDate: Date | undefined;\n onChange: (startDate: Date | undefined, endDate: Date | undefined) => void;\n className?: string;\n minDate?: Date;\n maxDate?: Date;\n}\n\nfunction TimelineInputInner({\n startDate,\n endDate,\n onChange,\n className,\n minDate,\n maxDate,\n}: TimelineInputProps): React.ReactElement {\n const handleStartChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const date = parseDateFromInput(e.target.value);\n onChange(date, endDate);\n },\n [onChange, endDate],\n );\n\n const handleEndChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const date = parseDateFromInput(e.target.value);\n onChange(startDate, date);\n },\n [onChange, startDate],\n );\n\n const handleClear = useCallback(() => {\n onChange(undefined, undefined);\n }, [onChange]);\n\n const startInputMax = useMemo(\n () => endDate ?? maxDate,\n [endDate, maxDate],\n );\n const endInputMin = useMemo(\n () => startDate ?? minDate,\n [startDate, minDate],\n );\n\n return (\n <div className={classnames(styles.timeline, className)}>\n <div className={styles.labels}>\n <span>{formatDateForDisplay(startDate, \"—\")}</span>\n <span>to</span>\n <span>{formatDateForDisplay(endDate, \"—\")}</span>\n {(startDate || endDate) && (\n <Button\n type=\"button\"\n className={styles.clearButton}\n onClick={handleClear}\n aria-label=\"Clear range\"\n >\n ×\n </Button>\n )}\n </div>\n\n <div className={styles.brush}>\n <Input\n type=\"date\"\n className={styles.input}\n value={formatDateForInput(startDate)}\n onChange={handleStartChange}\n min={minDate ? formatDateForInput(minDate) : undefined}\n max={startInputMax ? formatDateForInput(startInputMax) : undefined}\n aria-label=\"Start date\"\n />\n <span>—</span>\n <Input\n type=\"date\"\n className={styles.input}\n value={formatDateForInput(endDate)}\n onChange={handleEndChange}\n min={endInputMin ? formatDateForInput(endInputMin) : undefined}\n max={maxDate ? formatDateForInput(maxDate) : undefined}\n aria-label=\"End date\"\n />\n </div>\n </div>\n );\n}\n\nexport const TimelineInput: React.NamedExoticComponent<TimelineInputProps> =\n memo(TimelineInputInner);\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
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
+ .timeline {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--osdk-filter-range-gap, calc(var(--osdk-surface-spacing) * 2));
21
+ }
22
+
23
+ .labels {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: var(--osdk-surface-spacing);
27
+ font-size: var(--osdk-typography-size-body-small);
28
+ color: var(--osdk-typography-color-muted);
29
+ }
30
+
31
+ .clearButton {
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ padding: calc(var(--osdk-surface-spacing) * 0.5);
36
+ border: none;
37
+ background: transparent;
38
+ cursor: pointer;
39
+ color: var(--osdk-iconography-color-muted);
40
+ border-radius: var(--osdk-surface-border-radius);
41
+ margin-left: auto;
42
+
43
+ &:hover {
44
+ background: var(--osdk-surface-background-color-default-hover);
45
+ color: var(--osdk-typography-color-default-rest);
46
+ }
47
+ }
48
+
49
+ .brush {
50
+ display: flex;
51
+ align-items: center;
52
+ gap: var(--osdk-surface-spacing);
53
+ }
54
+
55
+ .brush span {
56
+ color: var(--osdk-typography-color-muted);
57
+ }
58
+
59
+ .input {
60
+ flex: 1;
61
+ font-size: var(--osdk-typography-size-body-medium);
62
+ padding: var(--osdk-filter-input-padding);
63
+ border: var(--osdk-filter-input-border);
64
+ border-radius: var(--osdk-filter-input-border-radius);
65
+ background: var(--osdk-filter-input-bg);
66
+ color: var(--osdk-filter-input-color);
67
+
68
+ &:focus {
69
+ border-color: var(--osdk-filter-input-focus-border);
70
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
71
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
72
+ }
73
+ }
@@ -0,0 +1,10 @@
1
+ // CSS Module proxy for TimelineInput.module.css
2
+ const styles = {
3
+ "timeline": "TimelineInput-module__timeline___43N82HCH",
4
+ "labels": "TimelineInput-module__labels___Co8bihV9",
5
+ "clearButton": "TimelineInput-module__clearButton___6TCIW46Z",
6
+ "brush": "TimelineInput-module__brush___DCoA1XWA",
7
+ "input": "TimelineInput-module__input___yAEKg6Mr"
8
+ };
9
+
10
+ export default styles;