@osdk/react-components 0.2.0-beta.15 → 0.2.0-beta.16

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 (337) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/browser/base-components/action-button/ActionButton.module.css +0 -4
  3. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
  4. package/build/browser/base-components/dialog/Dialog.module.css +0 -8
  5. package/build/browser/base-components/draggable-list/DraggableList.js +4 -2
  6. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
  7. package/build/browser/base-components/draggable-list/DraggableList.module.css +0 -8
  8. package/build/browser/filter-list/FilterInput.js +132 -0
  9. package/build/browser/filter-list/FilterInput.js.map +1 -0
  10. package/build/browser/filter-list/FilterList.js +91 -0
  11. package/build/browser/filter-list/FilterList.js.map +1 -0
  12. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  13. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  14. package/build/browser/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  15. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -0
  16. package/build/browser/filter-list/base/BaseFilterListApi.js +2 -0
  17. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -0
  18. package/build/browser/filter-list/base/FilterIcons.js +63 -0
  19. package/build/browser/filter-list/base/FilterIcons.js.map +1 -0
  20. package/build/browser/filter-list/base/FilterList.module.css +22 -1
  21. package/build/browser/filter-list/base/FilterList.module.css.js +2 -0
  22. package/build/browser/filter-list/base/FilterListContent.js +21 -20
  23. package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
  24. package/build/browser/filter-list/base/FilterListHeader.js +8 -3
  25. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  26. package/build/browser/filter-list/base/FilterListHeader.module.css +25 -1
  27. package/build/browser/filter-list/base/FilterListHeader.module.css.js +3 -0
  28. package/build/browser/filter-list/base/FilterListItem.js +36 -17
  29. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  30. package/build/browser/filter-list/base/FilterListItem.module.css +58 -2
  31. package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -0
  32. package/build/browser/filter-list/base/SortableFilterListItem.js +6 -6
  33. package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
  34. package/build/browser/filter-list/base/index.js +1 -2
  35. package/build/browser/filter-list/base/index.js.map +1 -1
  36. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +34 -15
  37. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  38. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  39. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +2 -1
  40. package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  41. package/build/browser/filter-list/base/inputs/ListogramInput.js +17 -21
  42. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  43. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +25 -19
  44. package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  45. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -14
  46. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  47. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  48. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -1
  49. package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -23
  50. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  51. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  52. package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  53. package/build/browser/filter-list/base/inputs/RangeInput.js +2 -32
  54. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  55. package/build/browser/filter-list/base/inputs/RangeInput.module.css +16 -14
  56. package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  57. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +6 -13
  58. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  59. package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -14
  60. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  61. package/build/browser/filter-list/base/inputs/TimelineInput.js +2 -2
  62. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
  63. package/build/browser/filter-list/base/inputs/TimelineInput.module.css +14 -12
  64. package/build/browser/filter-list/base/inputs/shared.module.css +5 -4
  65. package/build/browser/filter-list/hooks/useFilterListState.js +24 -3
  66. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  67. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  68. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  69. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  70. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  71. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  72. package/build/browser/filter-list/inputs/DateRangeFilterInput.js +105 -0
  73. package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  74. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +508 -0
  75. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  76. package/build/browser/filter-list/inputs/ListogramFilterInput.js +62 -0
  77. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  78. package/build/browser/filter-list/inputs/MultiDateFilterInput.js +38 -0
  79. package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  80. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  81. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  82. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  83. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  84. package/build/browser/filter-list/inputs/PropertyFilterInput.js +129 -0
  85. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  86. package/build/browser/filter-list/inputs/SingleDateFilterInput.js +38 -0
  87. package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  88. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  89. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  90. package/build/browser/filter-list/inputs/TextTagsFilterInput.js +54 -0
  91. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  92. package/build/browser/filter-list/inputs/TimelineFilterInput.js +49 -0
  93. package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  94. package/build/browser/filter-list/inputs/ToggleFilterInput.js +36 -0
  95. package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  96. package/build/browser/filter-list/types/AggregationTypes.js +2 -0
  97. package/build/browser/filter-list/types/AggregationTypes.js.map +1 -0
  98. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  99. package/build/browser/filter-list/types/index.js +0 -2
  100. package/build/browser/filter-list/types/index.js.map +1 -1
  101. package/build/browser/filter-list/utils/filterStateSerialization.js +42 -0
  102. package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -0
  103. package/build/browser/filter-list/utils/filterStateToWhereClause.js +19 -11
  104. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  105. package/build/browser/filter-list/utils/filterValues.js +26 -0
  106. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  107. package/build/browser/object-table/ColumnConfigDialog.module.css +0 -9
  108. package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -4
  109. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -12
  110. package/build/browser/public/experimental.js +4 -1
  111. package/build/browser/public/experimental.js.map +1 -1
  112. package/build/browser/shared/ErrorBoundary.module.css +14 -14
  113. package/build/browser/styles.css +207 -124
  114. package/build/cjs/public/experimental.cjs +3144 -2551
  115. package/build/cjs/public/experimental.cjs.map +1 -1
  116. package/build/cjs/public/experimental.css +591 -513
  117. package/build/cjs/public/experimental.css.map +1 -1
  118. package/build/cjs/public/experimental.d.cts +62 -2
  119. package/build/esm/base-components/action-button/ActionButton.module.css +0 -4
  120. package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
  121. package/build/esm/base-components/dialog/Dialog.module.css +0 -8
  122. package/build/esm/base-components/draggable-list/DraggableList.js +4 -2
  123. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
  124. package/build/esm/base-components/draggable-list/DraggableList.module.css +0 -8
  125. package/build/esm/filter-list/FilterInput.js +132 -0
  126. package/build/esm/filter-list/FilterInput.js.map +1 -0
  127. package/build/esm/filter-list/FilterList.js +91 -0
  128. package/build/esm/filter-list/FilterList.js.map +1 -0
  129. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  130. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  131. package/build/esm/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  132. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -0
  133. package/build/esm/filter-list/base/BaseFilterListApi.js +2 -0
  134. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -0
  135. package/build/esm/filter-list/base/FilterIcons.js +63 -0
  136. package/build/esm/filter-list/base/FilterIcons.js.map +1 -0
  137. package/build/esm/filter-list/base/FilterList.module.css +22 -1
  138. package/build/esm/filter-list/base/FilterListContent.js +21 -20
  139. package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
  140. package/build/esm/filter-list/base/FilterListHeader.js +8 -3
  141. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  142. package/build/esm/filter-list/base/FilterListHeader.module.css +25 -1
  143. package/build/esm/filter-list/base/FilterListItem.js +36 -17
  144. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  145. package/build/esm/filter-list/base/FilterListItem.module.css +58 -2
  146. package/build/esm/filter-list/base/SortableFilterListItem.js +6 -6
  147. package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
  148. package/build/esm/filter-list/base/index.js +1 -2
  149. package/build/esm/filter-list/base/index.js.map +1 -1
  150. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +34 -15
  151. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  152. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  153. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  154. package/build/esm/filter-list/base/inputs/ListogramInput.js +17 -21
  155. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  156. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +25 -19
  157. package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  158. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -14
  159. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  160. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  161. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -23
  162. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  163. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  164. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  165. package/build/esm/filter-list/base/inputs/RangeInput.js +2 -32
  166. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  167. package/build/esm/filter-list/base/inputs/RangeInput.module.css +16 -14
  168. package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  169. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +6 -13
  170. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  171. package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -14
  172. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  173. package/build/esm/filter-list/base/inputs/TimelineInput.js +2 -2
  174. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
  175. package/build/esm/filter-list/base/inputs/TimelineInput.module.css +14 -12
  176. package/build/esm/filter-list/base/inputs/shared.module.css +5 -4
  177. package/build/esm/filter-list/hooks/useFilterListState.js +24 -3
  178. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  179. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  180. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  181. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  182. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  183. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  184. package/build/esm/filter-list/inputs/DateRangeFilterInput.js +105 -0
  185. package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  186. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +508 -0
  187. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  188. package/build/esm/filter-list/inputs/ListogramFilterInput.js +62 -0
  189. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  190. package/build/esm/filter-list/inputs/MultiDateFilterInput.js +38 -0
  191. package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  192. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  193. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  194. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  195. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  196. package/build/esm/filter-list/inputs/PropertyFilterInput.js +129 -0
  197. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  198. package/build/esm/filter-list/inputs/SingleDateFilterInput.js +38 -0
  199. package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  200. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  201. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  202. package/build/esm/filter-list/inputs/TextTagsFilterInput.js +54 -0
  203. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  204. package/build/esm/filter-list/inputs/TimelineFilterInput.js +49 -0
  205. package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  206. package/build/esm/filter-list/inputs/ToggleFilterInput.js +36 -0
  207. package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  208. package/build/esm/filter-list/types/AggregationTypes.js +2 -0
  209. package/build/esm/filter-list/types/AggregationTypes.js.map +1 -0
  210. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  211. package/build/esm/filter-list/types/index.js +0 -2
  212. package/build/esm/filter-list/types/index.js.map +1 -1
  213. package/build/esm/filter-list/utils/filterStateSerialization.js +42 -0
  214. package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -0
  215. package/build/esm/filter-list/utils/filterStateToWhereClause.js +19 -11
  216. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  217. package/build/esm/filter-list/utils/filterValues.js +26 -0
  218. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  219. package/build/esm/object-table/ColumnConfigDialog.module.css +0 -9
  220. package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -4
  221. package/build/esm/object-table/TableHeaderWithPopover.module.css +0 -12
  222. package/build/esm/public/experimental.js +4 -1
  223. package/build/esm/public/experimental.js.map +1 -1
  224. package/build/esm/shared/ErrorBoundary.module.css +14 -14
  225. package/build/types/filter-list/{base/FilterInput.d.ts → FilterInput.d.ts} +2 -2
  226. package/build/types/filter-list/FilterInput.d.ts.map +1 -0
  227. package/build/types/filter-list/{base/FilterList.d.ts → FilterList.d.ts} +1 -1
  228. package/build/types/filter-list/FilterList.d.ts.map +1 -0
  229. package/build/types/filter-list/FilterListApi.d.ts +14 -0
  230. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  231. package/build/types/filter-list/FilterListItemApi.d.ts +13 -0
  232. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  233. package/build/types/filter-list/base/BaseFilterList.d.ts +3 -0
  234. package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -0
  235. package/build/types/filter-list/base/BaseFilterListApi.d.ts +29 -0
  236. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -0
  237. package/build/types/filter-list/base/FilterIcons.d.ts +4 -0
  238. package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -0
  239. package/build/types/filter-list/base/FilterListContent.d.ts +8 -8
  240. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
  241. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
  242. package/build/types/filter-list/base/FilterListItem.d.ts +7 -8
  243. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  244. package/build/types/filter-list/base/SortableFilterListItem.d.ts +7 -8
  245. package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
  246. package/build/types/filter-list/base/index.d.ts +2 -2
  247. package/build/types/filter-list/base/index.d.ts.map +1 -1
  248. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +7 -13
  249. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -1
  250. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +7 -12
  251. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -1
  252. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +10 -13
  253. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  254. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +7 -13
  255. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  256. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +5 -11
  257. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
  258. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +7 -12
  259. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
  260. package/build/types/filter-list/base/inputs/RangeInput.d.ts +7 -14
  261. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
  262. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +7 -13
  263. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  264. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +7 -13
  265. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
  266. package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
  267. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  268. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -5
  269. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
  270. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +14 -0
  271. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -0
  272. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts +10 -0
  273. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -0
  274. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +12 -0
  275. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -0
  276. package/build/types/filter-list/{base/inputs → inputs}/LinkedPropertyInput.d.ts +2 -2
  277. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -0
  278. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +16 -0
  279. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -0
  280. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts +9 -0
  281. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -0
  282. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +13 -0
  283. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -0
  284. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +12 -0
  285. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -0
  286. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +17 -0
  287. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -0
  288. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +9 -0
  289. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -0
  290. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +13 -0
  291. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -0
  292. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +13 -0
  293. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -0
  294. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts +9 -0
  295. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -0
  296. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts +9 -0
  297. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -0
  298. package/build/types/filter-list/types/AggregationTypes.d.ts +5 -0
  299. package/build/types/filter-list/types/AggregationTypes.d.ts.map +1 -0
  300. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +0 -19
  301. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
  302. package/build/types/filter-list/types/index.d.ts +0 -2
  303. package/build/types/filter-list/types/index.d.ts.map +1 -1
  304. package/build/types/filter-list/utils/filterStateSerialization.d.ts +3 -0
  305. package/build/types/filter-list/utils/filterStateSerialization.d.ts.map +1 -0
  306. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +1 -1
  307. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  308. package/build/types/filter-list/utils/filterValues.d.ts +2 -0
  309. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  310. package/build/types/public/experimental.d.ts +4 -1
  311. package/build/types/public/experimental.d.ts.map +1 -1
  312. package/package.json +3 -3
  313. package/build/browser/filter-list/base/FilterInput.js +0 -542
  314. package/build/browser/filter-list/base/FilterInput.js.map +0 -1
  315. package/build/browser/filter-list/base/FilterList.js.map +0 -1
  316. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  317. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  318. package/build/browser/filter-list/types/AddFilterMenuTypes.js +0 -2
  319. package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  320. package/build/browser/filter-list/types/FilterPanelTypes.js +0 -2
  321. package/build/browser/filter-list/types/FilterPanelTypes.js.map +0 -1
  322. package/build/esm/filter-list/base/FilterInput.js +0 -542
  323. package/build/esm/filter-list/base/FilterInput.js.map +0 -1
  324. package/build/esm/filter-list/base/FilterList.js.map +0 -1
  325. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  326. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  327. package/build/esm/filter-list/types/AddFilterMenuTypes.js +0 -2
  328. package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  329. package/build/esm/filter-list/types/FilterPanelTypes.js +0 -2
  330. package/build/esm/filter-list/types/FilterPanelTypes.js.map +0 -1
  331. package/build/types/filter-list/base/FilterInput.d.ts.map +0 -1
  332. package/build/types/filter-list/base/FilterList.d.ts.map +0 -1
  333. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +0 -1
  334. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +0 -56
  335. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +0 -1
  336. package/build/types/filter-list/types/FilterPanelTypes.d.ts +0 -18
  337. package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +0 -1
@@ -0,0 +1,508 @@
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 { useOsdkAggregation } from "@osdk/react/experimental";
18
+ import classnames from "classnames";
19
+ import React, { memo, useCallback, useMemo } from "react";
20
+ import { CheckboxListInput } from "../base/inputs/CheckboxListInput.js";
21
+ import { ContainsTextInput } from "../base/inputs/ContainsTextInput.js";
22
+ import { DateRangeInput } from "../base/inputs/DateRangeInput.js";
23
+ import styles from "../base/inputs/LinkedPropertyInput.module.css.js";
24
+ import { ListogramInput } from "../base/inputs/ListogramInput.js";
25
+ import { MultiDateInput } from "../base/inputs/MultiDateInput.js";
26
+ import { MultiSelectInput } from "../base/inputs/MultiSelectInput.js";
27
+ import { NullValueWrapper } from "../base/inputs/NullValueWrapper.js";
28
+ import { NumberRangeInput } from "../base/inputs/NumberRangeInput.js";
29
+ import { SingleDateInput } from "../base/inputs/SingleDateInput.js";
30
+ import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
31
+ import { TextTagsInput } from "../base/inputs/TextTagsInput.js";
32
+ import { TimelineInput } from "../base/inputs/TimelineInput.js";
33
+ import { ToggleInput } from "../base/inputs/ToggleInput.js";
34
+ import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
35
+ import { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from "../utils/aggregationHelpers.js";
36
+ import { assertUnreachable } from "../utils/assertUnreachable.js";
37
+ import { coerceToString, coerceToStringArray } from "../utils/coerceFilterValue.js";
38
+ function LinkedPropertyInputInner({
39
+ objectSet,
40
+ definition,
41
+ filterState,
42
+ onFilterStateChanged,
43
+ className,
44
+ style
45
+ }) {
46
+ const linkedObjectSet = useMemo(() => objectSet.pivotTo(definition.linkName), [objectSet, definition.linkName]);
47
+ const linkedObjectType = linkedObjectSet.$objectSetInternals.def;
48
+ const linkedPropertyKey = definition.linkedPropertyKey;
49
+ const innerState = filterState?.type === "linkedProperty" ? filterState.linkedFilterState : undefined;
50
+ const isExcluding = innerState?.isExcluding ?? false;
51
+ const includeNull = innerState?.includeNull;
52
+ const wrappedOnChange = useCallback(innerFilterState => {
53
+ onFilterStateChanged({
54
+ type: "linkedProperty",
55
+ linkedFilterState: innerFilterState
56
+ });
57
+ }, [onFilterStateChanged]);
58
+ const onSelectChange = useCallback(selectedValues => {
59
+ wrappedOnChange({
60
+ type: "SELECT",
61
+ selectedValues,
62
+ isExcluding
63
+ });
64
+ }, [wrappedOnChange, isExcluding]);
65
+ const onSingleSelectChange = useCallback(selectedValue => {
66
+ wrappedOnChange({
67
+ type: "SELECT",
68
+ selectedValues: selectedValue !== undefined ? [selectedValue] : [],
69
+ isExcluding
70
+ });
71
+ }, [wrappedOnChange, isExcluding]);
72
+ const onContainsTextChange = useCallback(value => {
73
+ wrappedOnChange({
74
+ type: "CONTAINS_TEXT",
75
+ value
76
+ });
77
+ }, [wrappedOnChange]);
78
+ const onToggleChange = useCallback(enabled => {
79
+ wrappedOnChange({
80
+ type: "TOGGLE",
81
+ enabled
82
+ });
83
+ }, [wrappedOnChange]);
84
+ const onNumberRangeChange = useCallback((minValue, maxValue) => {
85
+ wrappedOnChange({
86
+ type: "NUMBER_RANGE",
87
+ minValue,
88
+ maxValue,
89
+ includeNull
90
+ });
91
+ }, [wrappedOnChange, includeNull]);
92
+ const onDateRangeChange = useCallback((minValue, maxValue) => {
93
+ wrappedOnChange({
94
+ type: "DATE_RANGE",
95
+ minValue,
96
+ maxValue,
97
+ includeNull
98
+ });
99
+ }, [wrappedOnChange, includeNull]);
100
+ const onExactMatchChange = useCallback(values => {
101
+ wrappedOnChange({
102
+ type: "EXACT_MATCH",
103
+ values,
104
+ isExcluding
105
+ });
106
+ }, [wrappedOnChange, isExcluding]);
107
+ const onDateSelectChange = useCallback(date => {
108
+ wrappedOnChange({
109
+ type: "SELECT",
110
+ selectedValues: date !== undefined ? [date] : [],
111
+ isExcluding
112
+ });
113
+ }, [wrappedOnChange, isExcluding]);
114
+ const onMultiDateChange = useCallback(dates => {
115
+ wrappedOnChange({
116
+ type: "SELECT",
117
+ selectedValues: dates
118
+ });
119
+ }, [wrappedOnChange]);
120
+ const onTimelineChange = useCallback((start, end) => {
121
+ wrappedOnChange({
122
+ type: "TIMELINE",
123
+ startDate: start,
124
+ endDate: end,
125
+ isExcluding
126
+ });
127
+ }, [wrappedOnChange, isExcluding]);
128
+ const onNullChange = useCallback(newIncludeNull => {
129
+ if (innerState?.type === "NUMBER_RANGE") {
130
+ wrappedOnChange({
131
+ ...innerState,
132
+ includeNull: newIncludeNull
133
+ });
134
+ } else if (innerState?.type === "DATE_RANGE") {
135
+ wrappedOnChange({
136
+ ...innerState,
137
+ includeNull: newIncludeNull
138
+ });
139
+ } else {
140
+ wrappedOnChange({
141
+ type: "NUMBER_RANGE",
142
+ minValue: undefined,
143
+ maxValue: undefined,
144
+ includeNull: newIncludeNull
145
+ });
146
+ }
147
+ }, [wrappedOnChange, innerState]);
148
+ const content = (() => {
149
+ switch (definition.linkedFilterComponent) {
150
+ case "CHECKBOX_LIST":
151
+ {
152
+ const selectedValues = innerState?.type === "SELECT" ? coerceToStringArray(innerState.selectedValues) : [];
153
+ return /*#__PURE__*/React.createElement(LinkedCheckboxListInput, {
154
+ objectType: linkedObjectType,
155
+ propertyKey: linkedPropertyKey,
156
+ selectedValues: selectedValues,
157
+ onChange: onSelectChange
158
+ });
159
+ }
160
+ case "MULTI_SELECT":
161
+ {
162
+ const values = innerState?.type === "SELECT" ? coerceToStringArray(innerState.selectedValues) : [];
163
+ return /*#__PURE__*/React.createElement(LinkedMultiSelectInput, {
164
+ objectType: linkedObjectType,
165
+ propertyKey: linkedPropertyKey,
166
+ selectedValues: values,
167
+ onChange: onSelectChange
168
+ });
169
+ }
170
+ case "SINGLE_SELECT":
171
+ {
172
+ const value = innerState?.type === "SELECT" ? coerceToString(innerState.selectedValues[0]) : undefined;
173
+ return /*#__PURE__*/React.createElement(LinkedSingleSelectInput, {
174
+ objectType: linkedObjectType,
175
+ propertyKey: linkedPropertyKey,
176
+ selectedValue: value,
177
+ onChange: onSingleSelectChange
178
+ });
179
+ }
180
+ case "CONTAINS_TEXT":
181
+ {
182
+ const value = innerState?.type === "CONTAINS_TEXT" ? innerState.value : undefined;
183
+ return /*#__PURE__*/React.createElement(ContainsTextInput, {
184
+ value: value,
185
+ onChange: onContainsTextChange,
186
+ placeholder: `Search ${String(definition.linkedPropertyKey)}...`
187
+ });
188
+ }
189
+ case "TOGGLE":
190
+ {
191
+ const enabled = innerState?.type === "TOGGLE" ? innerState.enabled : false;
192
+ return /*#__PURE__*/React.createElement(ToggleInput, {
193
+ enabled: enabled,
194
+ onChange: onToggleChange
195
+ });
196
+ }
197
+ case "NUMBER_RANGE":
198
+ {
199
+ const nr = innerState?.type === "NUMBER_RANGE" ? innerState : undefined;
200
+ return /*#__PURE__*/React.createElement(LinkedNumberRangeInput, {
201
+ objectType: linkedObjectType,
202
+ propertyKey: linkedPropertyKey,
203
+ minValue: nr?.minValue,
204
+ maxValue: nr?.maxValue,
205
+ includeNull: nr?.includeNull,
206
+ onChange: onNumberRangeChange,
207
+ onNullChange: onNullChange
208
+ });
209
+ }
210
+ case "DATE_RANGE":
211
+ {
212
+ const dr = innerState?.type === "DATE_RANGE" ? innerState : undefined;
213
+ return /*#__PURE__*/React.createElement(LinkedDateRangeInput, {
214
+ objectType: linkedObjectType,
215
+ propertyKey: linkedPropertyKey,
216
+ minValue: dr?.minValue,
217
+ maxValue: dr?.maxValue,
218
+ includeNull: dr?.includeNull,
219
+ onChange: onDateRangeChange,
220
+ onNullChange: onNullChange
221
+ });
222
+ }
223
+ case "LISTOGRAM":
224
+ {
225
+ const exactState = innerState?.type === "EXACT_MATCH" ? innerState : undefined;
226
+ const selectedValues = exactState ? coerceToStringArray(exactState.values) : [];
227
+ return /*#__PURE__*/React.createElement(LinkedListogramInput, {
228
+ objectType: linkedObjectType,
229
+ propertyKey: linkedPropertyKey,
230
+ selectedValues: selectedValues,
231
+ onChange: onExactMatchChange
232
+ });
233
+ }
234
+ case "TEXT_TAGS":
235
+ {
236
+ const exactState = innerState?.type === "EXACT_MATCH" ? innerState : undefined;
237
+ const tags = exactState ? coerceToStringArray(exactState.values) : [];
238
+ return /*#__PURE__*/React.createElement(LinkedTextTagsInput, {
239
+ objectType: linkedObjectType,
240
+ propertyKey: linkedPropertyKey,
241
+ tags: tags,
242
+ onChange: onExactMatchChange
243
+ });
244
+ }
245
+ case "SINGLE_DATE":
246
+ {
247
+ const selectedDate = innerState?.type === "SELECT" ? innerState.selectedValues[0] instanceof Date ? innerState.selectedValues[0] : undefined : undefined;
248
+ return /*#__PURE__*/React.createElement(SingleDateInput, {
249
+ selectedDate: selectedDate,
250
+ onChange: onDateSelectChange,
251
+ showClearButton: true
252
+ });
253
+ }
254
+ case "MULTI_DATE":
255
+ {
256
+ const selectedDates = innerState?.type === "SELECT" ? innerState.selectedValues.filter(v => v instanceof Date) : [];
257
+ return /*#__PURE__*/React.createElement(MultiDateInput, {
258
+ selectedDates: selectedDates,
259
+ onChange: onMultiDateChange,
260
+ showClearAll: true
261
+ });
262
+ }
263
+ case "TIMELINE":
264
+ {
265
+ const tl = innerState?.type === "TIMELINE" ? innerState : undefined;
266
+ return /*#__PURE__*/React.createElement(TimelineInput, {
267
+ startDate: tl?.startDate,
268
+ endDate: tl?.endDate,
269
+ onChange: onTimelineChange
270
+ });
271
+ }
272
+ default:
273
+ return assertUnreachable(definition.linkedFilterComponent);
274
+ }
275
+ })();
276
+ return /*#__PURE__*/React.createElement("div", {
277
+ className: classnames(styles.linkedProperty, className),
278
+ style: style
279
+ }, content);
280
+ }
281
+ export const LinkedPropertyInput = /*#__PURE__*/memo(LinkedPropertyInputInner);
282
+ function LinkedCheckboxListInput({
283
+ objectType,
284
+ propertyKey,
285
+ selectedValues,
286
+ onChange
287
+ }) {
288
+ const {
289
+ data,
290
+ isLoading,
291
+ error
292
+ } = usePropertyAggregation(objectType, propertyKey);
293
+ return /*#__PURE__*/React.createElement(CheckboxListInput, {
294
+ values: data,
295
+ isLoading: isLoading,
296
+ error: error,
297
+ selectedValues: selectedValues,
298
+ onChange: onChange
299
+ });
300
+ }
301
+ function LinkedMultiSelectInput({
302
+ objectType,
303
+ propertyKey,
304
+ selectedValues,
305
+ onChange
306
+ }) {
307
+ const {
308
+ data,
309
+ isLoading,
310
+ error
311
+ } = usePropertyAggregation(objectType, propertyKey);
312
+ return /*#__PURE__*/React.createElement(MultiSelectInput, {
313
+ values: data,
314
+ isLoading: isLoading,
315
+ error: error,
316
+ selectedValues: selectedValues,
317
+ onChange: onChange
318
+ });
319
+ }
320
+ function LinkedSingleSelectInput({
321
+ objectType,
322
+ propertyKey,
323
+ selectedValue,
324
+ onChange
325
+ }) {
326
+ const {
327
+ data,
328
+ isLoading,
329
+ error
330
+ } = usePropertyAggregation(objectType, propertyKey);
331
+ return /*#__PURE__*/React.createElement(SingleSelectInput, {
332
+ values: data,
333
+ isLoading: isLoading,
334
+ error: error,
335
+ selectedValue: selectedValue,
336
+ onChange: onChange,
337
+ ariaLabel: `Select ${propertyKey}`
338
+ });
339
+ }
340
+ function LinkedListogramInput({
341
+ objectType,
342
+ propertyKey,
343
+ selectedValues,
344
+ onChange
345
+ }) {
346
+ const {
347
+ data,
348
+ maxCount,
349
+ isLoading,
350
+ error
351
+ } = usePropertyAggregation(objectType, propertyKey);
352
+ return /*#__PURE__*/React.createElement(ListogramInput, {
353
+ values: data,
354
+ maxCount: maxCount,
355
+ isLoading: isLoading,
356
+ error: error,
357
+ selectedValues: selectedValues,
358
+ onChange: onChange
359
+ });
360
+ }
361
+ function LinkedTextTagsInput({
362
+ objectType,
363
+ propertyKey,
364
+ tags,
365
+ onChange
366
+ }) {
367
+ const aggregationOptions = useMemo(() => ({
368
+ limit: 50
369
+ }), []);
370
+ const {
371
+ data,
372
+ isLoading,
373
+ error
374
+ } = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
375
+ return /*#__PURE__*/React.createElement(TextTagsInput, {
376
+ suggestions: data,
377
+ isLoading: isLoading,
378
+ error: error,
379
+ tags: tags,
380
+ onChange: onChange,
381
+ suggestionLimit: 10
382
+ });
383
+ }
384
+ function useLinkedRangeData(objectType, propertyKey) {
385
+ const aggregateOptions = useMemo(() => createGroupByAggregateOptions(propertyKey), [propertyKey]);
386
+ const histogramArgs = useMemo(() => ({
387
+ aggregate: aggregateOptions
388
+ }), [aggregateOptions]);
389
+ const {
390
+ data: aggregateData,
391
+ isLoading: histLoading
392
+ } = useOsdkAggregation(objectType, histogramArgs);
393
+ const nullCountAggregateOptions = useMemo(() => createNullCountAggregateOptions(), []);
394
+ const nullWhereClause = useMemo(() => createNullWhereClause(propertyKey), [propertyKey]);
395
+ const nullCountArgs = useMemo(() => ({
396
+ where: nullWhereClause,
397
+ aggregate: nullCountAggregateOptions
398
+ }), [nullWhereClause, nullCountAggregateOptions]);
399
+ const {
400
+ data: nullCountData,
401
+ isLoading: nullLoading
402
+ } = useOsdkAggregation(objectType, nullCountArgs);
403
+ const nullCount = useMemo(() => {
404
+ if (!nullCountData) return 0;
405
+ const result = nullCountData;
406
+ if ("$count" in result && typeof result.$count === "number") {
407
+ return result.$count;
408
+ }
409
+ return 0;
410
+ }, [nullCountData]);
411
+ return {
412
+ aggregateData,
413
+ histLoading,
414
+ nullCount,
415
+ nullLoading
416
+ };
417
+ }
418
+ function LinkedNumberRangeInput({
419
+ objectType,
420
+ propertyKey,
421
+ minValue,
422
+ maxValue,
423
+ includeNull,
424
+ onChange,
425
+ onNullChange
426
+ }) {
427
+ const {
428
+ aggregateData,
429
+ histLoading,
430
+ nullCount,
431
+ nullLoading
432
+ } = useLinkedRangeData(objectType, propertyKey);
433
+ const valueCountPairs = useMemo(() => {
434
+ if (!aggregateData) return [];
435
+ const pairs = [];
436
+ for (const item of aggregateData) {
437
+ const rawValue = item.$group[propertyKey];
438
+ if (rawValue != null) {
439
+ const parsed = parseFloat(String(rawValue));
440
+ if (!isNaN(parsed)) {
441
+ pairs.push({
442
+ value: parsed,
443
+ count: item.$count ?? 0
444
+ });
445
+ }
446
+ }
447
+ }
448
+ return pairs;
449
+ }, [aggregateData, propertyKey]);
450
+ return /*#__PURE__*/React.createElement(NullValueWrapper, {
451
+ nullCount: nullCount,
452
+ isLoading: nullLoading,
453
+ includeNull: includeNull,
454
+ onIncludeNullChange: onNullChange
455
+ }, /*#__PURE__*/React.createElement(NumberRangeInput, {
456
+ valueCountPairs: valueCountPairs,
457
+ isLoading: histLoading,
458
+ minValue: minValue,
459
+ maxValue: maxValue,
460
+ onChange: onChange
461
+ }));
462
+ }
463
+ function LinkedDateRangeInput({
464
+ objectType,
465
+ propertyKey,
466
+ minValue,
467
+ maxValue,
468
+ includeNull,
469
+ onChange,
470
+ onNullChange
471
+ }) {
472
+ const {
473
+ aggregateData,
474
+ histLoading,
475
+ nullCount,
476
+ nullLoading
477
+ } = useLinkedRangeData(objectType, propertyKey);
478
+ const valueCountPairs = useMemo(() => {
479
+ if (!aggregateData) return [];
480
+ const pairs = [];
481
+ for (const item of aggregateData) {
482
+ const rawValue = item.$group[propertyKey];
483
+ if (rawValue != null) {
484
+ const date = new Date(String(rawValue));
485
+ if (!isNaN(date.getTime())) {
486
+ pairs.push({
487
+ value: date,
488
+ count: item.$count ?? 0
489
+ });
490
+ }
491
+ }
492
+ }
493
+ return pairs;
494
+ }, [aggregateData, propertyKey]);
495
+ return /*#__PURE__*/React.createElement(NullValueWrapper, {
496
+ nullCount: nullCount,
497
+ isLoading: nullLoading,
498
+ includeNull: includeNull,
499
+ onIncludeNullChange: onNullChange
500
+ }, /*#__PURE__*/React.createElement(DateRangeInput, {
501
+ valueCountPairs: valueCountPairs,
502
+ isLoading: histLoading,
503
+ minValue: minValue,
504
+ maxValue: maxValue,
505
+ onChange: onChange
506
+ }));
507
+ }
508
+ //# sourceMappingURL=LinkedPropertyInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkedPropertyInput.js","names":["useOsdkAggregation","classnames","React","memo","useCallback","useMemo","CheckboxListInput","ContainsTextInput","DateRangeInput","styles","ListogramInput","MultiDateInput","MultiSelectInput","NullValueWrapper","NumberRangeInput","SingleDateInput","SingleSelectInput","TextTagsInput","TimelineInput","ToggleInput","usePropertyAggregation","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","assertUnreachable","coerceToString","coerceToStringArray","LinkedPropertyInputInner","objectSet","definition","filterState","onFilterStateChanged","className","style","linkedObjectSet","pivotTo","linkName","linkedObjectType","$objectSetInternals","def","linkedPropertyKey","innerState","type","linkedFilterState","undefined","isExcluding","includeNull","wrappedOnChange","innerFilterState","onSelectChange","selectedValues","onSingleSelectChange","selectedValue","onContainsTextChange","value","onToggleChange","enabled","onNumberRangeChange","minValue","maxValue","onDateRangeChange","onExactMatchChange","values","onDateSelectChange","date","onMultiDateChange","dates","onTimelineChange","start","end","startDate","endDate","onNullChange","newIncludeNull","content","linkedFilterComponent","createElement","LinkedCheckboxListInput","objectType","propertyKey","onChange","LinkedMultiSelectInput","LinkedSingleSelectInput","placeholder","String","nr","LinkedNumberRangeInput","dr","LinkedDateRangeInput","exactState","LinkedListogramInput","tags","LinkedTextTagsInput","selectedDate","Date","showClearButton","selectedDates","filter","v","showClearAll","tl","linkedProperty","LinkedPropertyInput","data","isLoading","error","ariaLabel","maxCount","aggregationOptions","limit","suggestions","suggestionLimit","useLinkedRangeData","aggregateOptions","histogramArgs","aggregate","aggregateData","histLoading","nullCountAggregateOptions","nullWhereClause","nullCountArgs","where","nullCountData","nullLoading","nullCount","result","$count","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","isNaN","push","count","onIncludeNullChange","getTime"],"sources":["LinkedPropertyInput.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 LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n} from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { CheckboxListInput } from \"../base/inputs/CheckboxListInput.js\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport { DateRangeInput } from \"../base/inputs/DateRangeInput.js\";\nimport styles from \"../base/inputs/LinkedPropertyInput.module.css\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nimport { MultiSelectInput } from \"../base/inputs/MultiSelectInput.js\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport { SingleDateInput } from \"../base/inputs/SingleDateInput.js\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport { TimelineInput } from \"../base/inputs/TimelineInput.js\";\nimport { ToggleInput } from \"../base/inputs/ToggleInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport type { LinkedPropertyFilterDefinition } from \"../types/LinkedFilterTypes.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\nimport { assertUnreachable } from \"../utils/assertUnreachable.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} from \"../utils/coerceFilterValue.js\";\n\ninterface LinkedPropertyInputProps<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n> {\n objectSet: ObjectSet<Q>;\n definition: LinkedPropertyFilterDefinition<\n Q,\n L,\n ObjectTypeDefinition,\n PropertyKeys<ObjectTypeDefinition>\n >;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction LinkedPropertyInputInner<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n>({\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n className,\n style,\n}: LinkedPropertyInputProps<Q, L>): React.ReactElement {\n const linkedObjectSet = useMemo(\n () => objectSet.pivotTo(definition.linkName),\n [objectSet, definition.linkName],\n );\n\n const linkedObjectType = linkedObjectSet.$objectSetInternals.def;\n\n const linkedPropertyKey = definition.linkedPropertyKey as PropertyKeys<\n typeof linkedObjectType\n >;\n\n const innerState = filterState?.type === \"linkedProperty\"\n ? filterState.linkedFilterState\n : undefined;\n\n const isExcluding = innerState?.isExcluding ?? false;\n const includeNull = innerState?.includeNull;\n\n const wrappedOnChange = useCallback(\n (innerFilterState: FilterState) => {\n onFilterStateChanged({\n type: \"linkedProperty\",\n linkedFilterState: innerFilterState,\n });\n },\n [onFilterStateChanged],\n );\n\n const onSelectChange = useCallback(\n (selectedValues: string[]) => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [wrappedOnChange, isExcluding],\n );\n\n const onSingleSelectChange = useCallback(\n (selectedValue: string | undefined) => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: selectedValue !== undefined ? [selectedValue] : [],\n isExcluding,\n });\n },\n [wrappedOnChange, isExcluding],\n );\n\n const onContainsTextChange = useCallback(\n (value: string | undefined) => {\n wrappedOnChange({ type: \"CONTAINS_TEXT\", value });\n },\n [wrappedOnChange],\n );\n\n const onToggleChange = useCallback(\n (enabled: boolean) => {\n wrappedOnChange({ type: \"TOGGLE\", enabled });\n },\n [wrappedOnChange],\n );\n\n const onNumberRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [wrappedOnChange, includeNull],\n );\n\n const onDateRangeChange = useCallback(\n (minValue: Date | undefined, maxValue: Date | undefined) => {\n wrappedOnChange({\n type: \"DATE_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [wrappedOnChange, includeNull],\n );\n\n const onExactMatchChange = useCallback(\n (values: string[]) => {\n wrappedOnChange({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [wrappedOnChange, isExcluding],\n );\n\n const onDateSelectChange = useCallback(\n (date: Date | undefined) => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: date !== undefined ? [date] : [],\n isExcluding,\n });\n },\n [wrappedOnChange, isExcluding],\n );\n\n const onMultiDateChange = useCallback(\n (dates: Date[]) => {\n wrappedOnChange({\n type: \"SELECT\",\n selectedValues: dates,\n });\n },\n [wrappedOnChange],\n );\n\n const onTimelineChange = useCallback(\n (start: Date | undefined, end: Date | undefined) => {\n wrappedOnChange({\n type: \"TIMELINE\",\n startDate: start,\n endDate: end,\n isExcluding,\n });\n },\n [wrappedOnChange, isExcluding],\n );\n\n const onNullChange = useCallback(\n (newIncludeNull: boolean) => {\n if (innerState?.type === \"NUMBER_RANGE\") {\n wrappedOnChange({ ...innerState, includeNull: newIncludeNull });\n } else if (innerState?.type === \"DATE_RANGE\") {\n wrappedOnChange({ ...innerState, includeNull: newIncludeNull });\n } else {\n wrappedOnChange({\n type: \"NUMBER_RANGE\",\n minValue: undefined,\n maxValue: undefined,\n includeNull: newIncludeNull,\n });\n }\n },\n [wrappedOnChange, innerState],\n );\n\n const content = (() => {\n switch (definition.linkedFilterComponent) {\n case \"CHECKBOX_LIST\": {\n const selectedValues = innerState?.type === \"SELECT\"\n ? coerceToStringArray(innerState.selectedValues)\n : [];\n return (\n <LinkedCheckboxListInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n selectedValues={selectedValues}\n onChange={onSelectChange}\n />\n );\n }\n\n case \"MULTI_SELECT\": {\n const values = innerState?.type === \"SELECT\"\n ? coerceToStringArray(innerState.selectedValues)\n : [];\n return (\n <LinkedMultiSelectInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n selectedValues={values}\n onChange={onSelectChange}\n />\n );\n }\n\n case \"SINGLE_SELECT\": {\n const value = innerState?.type === \"SELECT\"\n ? coerceToString(innerState.selectedValues[0])\n : undefined;\n return (\n <LinkedSingleSelectInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n selectedValue={value}\n onChange={onSingleSelectChange}\n />\n );\n }\n\n case \"CONTAINS_TEXT\": {\n const value = innerState?.type === \"CONTAINS_TEXT\"\n ? innerState.value\n : undefined;\n return (\n <ContainsTextInput\n value={value}\n onChange={onContainsTextChange}\n placeholder={`Search ${String(definition.linkedPropertyKey)}...`}\n />\n );\n }\n\n case \"TOGGLE\": {\n const enabled = innerState?.type === \"TOGGLE\"\n ? innerState.enabled\n : false;\n return (\n <ToggleInput\n enabled={enabled}\n onChange={onToggleChange}\n />\n );\n }\n\n case \"NUMBER_RANGE\": {\n const nr = innerState?.type === \"NUMBER_RANGE\" ? innerState : undefined;\n return (\n <LinkedNumberRangeInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n minValue={nr?.minValue}\n maxValue={nr?.maxValue}\n includeNull={nr?.includeNull}\n onChange={onNumberRangeChange}\n onNullChange={onNullChange}\n />\n );\n }\n\n case \"DATE_RANGE\": {\n const dr = innerState?.type === \"DATE_RANGE\" ? innerState : undefined;\n return (\n <LinkedDateRangeInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n minValue={dr?.minValue}\n maxValue={dr?.maxValue}\n includeNull={dr?.includeNull}\n onChange={onDateRangeChange}\n onNullChange={onNullChange}\n />\n );\n }\n\n case \"LISTOGRAM\": {\n const exactState = innerState?.type === \"EXACT_MATCH\"\n ? innerState\n : undefined;\n const selectedValues = exactState\n ? coerceToStringArray(exactState.values)\n : [];\n return (\n <LinkedListogramInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n selectedValues={selectedValues}\n onChange={onExactMatchChange}\n />\n );\n }\n\n case \"TEXT_TAGS\": {\n const exactState = innerState?.type === \"EXACT_MATCH\"\n ? innerState\n : undefined;\n const tags = exactState ? coerceToStringArray(exactState.values) : [];\n return (\n <LinkedTextTagsInput\n objectType={linkedObjectType}\n propertyKey={linkedPropertyKey}\n tags={tags}\n onChange={onExactMatchChange}\n />\n );\n }\n\n case \"SINGLE_DATE\": {\n const selectedDate = innerState?.type === \"SELECT\"\n ? (innerState.selectedValues[0] instanceof Date\n ? innerState.selectedValues[0]\n : undefined)\n : undefined;\n return (\n <SingleDateInput\n selectedDate={selectedDate}\n onChange={onDateSelectChange}\n showClearButton={true}\n />\n );\n }\n\n case \"MULTI_DATE\": {\n const selectedDates = innerState?.type === \"SELECT\"\n ? innerState.selectedValues.filter(\n (v): v is Date => v instanceof Date,\n )\n : [];\n return (\n <MultiDateInput\n selectedDates={selectedDates}\n onChange={onMultiDateChange}\n showClearAll={true}\n />\n );\n }\n\n case \"TIMELINE\": {\n const tl = innerState?.type === \"TIMELINE\" ? innerState : undefined;\n return (\n <TimelineInput\n startDate={tl?.startDate}\n endDate={tl?.endDate}\n onChange={onTimelineChange}\n />\n );\n }\n\n default:\n return assertUnreachable(definition.linkedFilterComponent);\n }\n })();\n\n return (\n <div className={classnames(styles.linkedProperty, className)} style={style}>\n {content}\n </div>\n );\n}\n\nexport const LinkedPropertyInput: typeof LinkedPropertyInputInner = memo(\n LinkedPropertyInputInner,\n) as typeof LinkedPropertyInputInner;\n\ninterface LinkedAggregationInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: PropertyKeys<Q>;\n}\n\ninterface LinkedCheckboxListInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValues: string[];\n onChange: (values: string[]) => void;\n}\n\nfunction LinkedCheckboxListInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n selectedValues,\n onChange,\n}: LinkedCheckboxListInputProps<Q>): React.ReactElement {\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n );\n return (\n <CheckboxListInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n />\n );\n}\n\ninterface LinkedMultiSelectInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValues: string[];\n onChange: (values: string[]) => void;\n}\n\nfunction LinkedMultiSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n selectedValues,\n onChange,\n}: LinkedMultiSelectInputProps<Q>): React.ReactElement {\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n );\n return (\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n />\n );\n}\n\ninterface LinkedSingleSelectInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValue: string | undefined;\n onChange: (value: string | undefined) => void;\n}\n\nfunction LinkedSingleSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n selectedValue,\n onChange,\n}: LinkedSingleSelectInputProps<Q>): React.ReactElement {\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n );\n return (\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={onChange}\n ariaLabel={`Select ${propertyKey as string}`}\n />\n );\n}\n\ninterface LinkedListogramInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValues: string[];\n onChange: (values: string[]) => void;\n}\n\nfunction LinkedListogramInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n selectedValues,\n onChange,\n}: LinkedListogramInputProps<Q>): React.ReactElement {\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n );\n return (\n <ListogramInput\n values={data}\n maxCount={maxCount}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n />\n );\n}\n\ninterface LinkedTextTagsInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n tags: string[];\n onChange: (values: string[]) => void;\n}\n\nfunction LinkedTextTagsInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n tags,\n onChange,\n}: LinkedTextTagsInputProps<Q>): React.ReactElement {\n const aggregationOptions = useMemo(() => ({ limit: 50 }), []);\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n aggregationOptions,\n );\n return (\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={onChange}\n suggestionLimit={10}\n />\n );\n}\n\ninterface LinkedRangeInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n includeNull?: boolean;\n onNullChange: (include: boolean) => void;\n}\n\nfunction useLinkedRangeData<Q extends ObjectTypeDefinition>(\n objectType: Q,\n propertyKey: PropertyKeys<Q>,\n) {\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions }),\n [aggregateOptions],\n );\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\n\n const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const nullCountArgs = useMemo(\n () => ({ where: nullWhereClause, aggregate: nullCountAggregateOptions }),\n [nullWhereClause, nullCountAggregateOptions],\n );\n const { data: nullCountData, isLoading: nullLoading } = useOsdkAggregation(\n objectType,\n nullCountArgs,\n );\n\n const nullCount = useMemo(() => {\n if (!nullCountData) return 0;\n const result = nullCountData as { $count?: number } | Iterable<unknown>;\n if (\"$count\" in result && typeof result.$count === \"number\") {\n return result.$count;\n }\n return 0;\n }, [nullCountData]);\n\n return { aggregateData, histLoading, nullCount, nullLoading };\n}\n\ninterface LinkedNumberRangeInputProps<Q extends ObjectTypeDefinition>\n extends LinkedRangeInputProps<Q>\n{\n minValue: number | undefined;\n maxValue: number | undefined;\n onChange: (min: number | undefined, max: number | undefined) => void;\n}\n\nfunction LinkedNumberRangeInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange,\n}: LinkedNumberRangeInputProps<Q>): React.ReactElement {\n const { aggregateData, histLoading, nullCount, nullLoading } =\n useLinkedRangeData(objectType, propertyKey);\n\n const valueCountPairs = useMemo<Array<{ value: number; count: number }>>(\n () => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: number; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey as string];\n if (rawValue != null) {\n const parsed = parseFloat(String(rawValue));\n if (!isNaN(parsed)) {\n pairs.push({ value: parsed, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n },\n [aggregateData, propertyKey],\n );\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={nullLoading}\n includeNull={includeNull}\n onIncludeNullChange={onNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={histLoading}\n minValue={minValue}\n maxValue={maxValue}\n onChange={onChange}\n />\n </NullValueWrapper>\n );\n}\n\ninterface LinkedDateRangeInputProps<Q extends ObjectTypeDefinition>\n extends LinkedRangeInputProps<Q>\n{\n minValue: Date | undefined;\n maxValue: Date | undefined;\n onChange: (min: Date | undefined, max: Date | undefined) => void;\n}\n\nfunction LinkedDateRangeInput<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n minValue,\n maxValue,\n includeNull,\n onChange,\n onNullChange,\n}: LinkedDateRangeInputProps<Q>): React.ReactElement {\n const { aggregateData, histLoading, nullCount, nullLoading } =\n useLinkedRangeData(objectType, propertyKey);\n\n const valueCountPairs = useMemo<Array<{ value: Date; count: number }>>(() => {\n if (!aggregateData) return [];\n const dataArray = aggregateData as Iterable<{\n $group: Record<string, unknown>;\n $count?: number;\n }>;\n const pairs: Array<{ value: Date; count: number }> = [];\n for (const item of dataArray) {\n const rawValue = item.$group[propertyKey as string];\n if (rawValue != null) {\n const date = new Date(String(rawValue));\n if (!isNaN(date.getTime())) {\n pairs.push({ value: date, count: item.$count ?? 0 });\n }\n }\n }\n return pairs;\n }, [aggregateData, propertyKey]);\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={nullLoading}\n includeNull={includeNull}\n onIncludeNullChange={onNullChange}\n >\n <DateRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={histLoading}\n minValue={minValue}\n maxValue={maxValue}\n onChange={onChange}\n />\n </NullValueWrapper>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,62 @@
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 React, { memo, useCallback, useMemo } from "react";
18
+ import { ListogramInput } from "../base/inputs/ListogramInput.js";
19
+ import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
20
+ import { coerceToStringArray } from "../utils/coerceFilterValue.js";
21
+ function ListogramFilterInputInner({
22
+ objectType,
23
+ propertyKey,
24
+ filterState,
25
+ onFilterStateChanged,
26
+ whereClause,
27
+ colorMap,
28
+ displayMode,
29
+ maxVisibleItems
30
+ }) {
31
+ const selectedValues = useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
32
+ const isExcluding = filterState?.isExcluding ?? false;
33
+ const handleChange = useCallback(values => {
34
+ onFilterStateChanged({
35
+ type: "EXACT_MATCH",
36
+ values,
37
+ isExcluding
38
+ });
39
+ }, [onFilterStateChanged, isExcluding]);
40
+ const aggregationOptions = useMemo(() => ({
41
+ where: whereClause
42
+ }), [whereClause]);
43
+ const {
44
+ data,
45
+ maxCount,
46
+ isLoading,
47
+ error
48
+ } = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
49
+ return /*#__PURE__*/React.createElement(ListogramInput, {
50
+ values: data,
51
+ maxCount: maxCount,
52
+ isLoading: isLoading,
53
+ error: error,
54
+ selectedValues: selectedValues,
55
+ onChange: handleChange,
56
+ colorMap: colorMap,
57
+ displayMode: displayMode,
58
+ maxVisibleItems: maxVisibleItems
59
+ });
60
+ }
61
+ export const ListogramFilterInput = /*#__PURE__*/memo(ListogramFilterInputInner);
62
+ //# sourceMappingURL=ListogramFilterInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListogramFilterInput.js","names":["React","memo","useCallback","useMemo","ListogramInput","usePropertyAggregation","coerceToStringArray","ListogramFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","whereClause","colorMap","displayMode","maxVisibleItems","selectedValues","type","values","isExcluding","handleChange","aggregationOptions","where","data","maxCount","isLoading","error","createElement","onChange","ListogramFilterInput"],"sources":["ListogramFilterInput.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 ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface ListogramFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n colorMap?: Record<string, string>;\n displayMode?: \"full\" | \"count\" | \"minimal\";\n maxVisibleItems?: number;\n}\n\nfunction ListogramFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n maxVisibleItems,\n}: ListogramFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n aggregationOptions,\n );\n\n return (\n <ListogramInput\n values={data}\n maxCount={maxCount}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n colorMap={colorMap}\n displayMode={displayMode}\n maxVisibleItems={maxVisibleItems}\n />\n );\n}\n\nexport const ListogramFilterInput: typeof ListogramFilterInputInner = memo(\n ListogramFilterInputInner,\n) as typeof ListogramFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,cAAc,QAAQ,kCAAkC;AAEjE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAanE,SAASC,yBAAyBA,CAAiC;EACjEC,UAAU;EACVC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,QAAQ;EACRC,WAAW;EACXC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,cAAc,GAAGb,OAAO,CAC5B,MACEO,WAAW,EAAEO,IAAI,KAAK,aAAa,GAC/BX,mBAAmB,CAACI,WAAW,CAACQ,MAAM,CAAC,GACvC,EAAE,EACR,CAACR,WAAW,CACd,CAAC;EACD,MAAMS,WAAW,GAAGT,WAAW,EAAES,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGlB,WAAW,CAC7BgB,MAAgB,IAAK;IACpBP,oBAAoB,CAAC;MACnBM,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACR,oBAAoB,EAAEQ,WAAW,CACpC,CAAC;EAED,MAAME,kBAAkB,GAAGlB,OAAO,CAChC,OAAO;IAAEmB,KAAK,EAAEV;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEW,IAAI;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGrB,sBAAsB,CACjEG,UAAU,EACVC,WAAW,EACXY,kBACF,CAAC;EAED,oBACErB,KAAA,CAAA2B,aAAA,CAACvB,cAAc;IACbc,MAAM,EAAEK,IAAK;IACbC,QAAQ,EAAEA,QAAS;IACnBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbV,cAAc,EAAEA,cAAe;IAC/BY,QAAQ,EAAER,YAAa;IACvBP,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBC,eAAe,EAAEA;EAAgB,CAClC,CAAC;AAEN;AAEA,OAAO,MAAMc,oBAAsD,gBAAG5B,IAAI,CACxEM,yBACF,CAAqC","ignoreList":[]}