@osdk/react-components 0.19.0 → 0.19.1-beta.0

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 (257) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  3. package/build/browser/action-form/utils/getDefaultFieldDefinitions.js +1 -0
  4. package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  5. package/build/browser/filter-list/FilterInput.js +7 -0
  6. package/build/browser/filter-list/FilterInput.js.map +1 -1
  7. package/build/browser/filter-list/FilterList.js +8 -2
  8. package/build/browser/filter-list/FilterList.js.map +1 -1
  9. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  10. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  11. package/build/browser/filter-list/__tests__/aggregationMocks.js +50 -0
  12. package/build/browser/filter-list/__tests__/aggregationMocks.js.map +1 -0
  13. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -1
  14. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
  15. package/build/browser/filter-list/base/FilterInputExcludeRow.js +12 -16
  16. package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  17. package/build/browser/filter-list/base/FilterListContent.js +42 -40
  18. package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
  19. package/build/browser/filter-list/base/FilterListItem.js +8 -36
  20. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  21. package/build/browser/filter-list/base/SortableFilterListItem.js +3 -1
  22. package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
  23. package/build/browser/filter-list/base/inputs/ListogramInput.js +3 -1
  24. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  25. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +6 -0
  26. package/build/browser/filter-list/base/inputs/MultiDateInput.js +2 -1
  27. package/build/browser/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  28. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -3
  29. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  30. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +6 -0
  31. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -0
  32. package/build/browser/filter-list/base/inputs/SingleDateInput.js +4 -2
  33. package/build/browser/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  34. package/build/browser/filter-list/hooks/useDualScopeAggregation.js +70 -0
  35. package/build/browser/filter-list/hooks/useDualScopeAggregation.js.map +1 -0
  36. package/build/browser/filter-list/hooks/useFilterListState.js +35 -17
  37. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  38. package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js +37 -0
  39. package/build/browser/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -0
  40. package/build/browser/filter-list/hooks/usePropertyAggregation.js +7 -6
  41. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  42. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +45 -22
  43. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  44. package/build/browser/filter-list/inputs/ListogramFilterInput.js +9 -7
  45. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  46. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +8 -6
  47. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  48. package/build/browser/filter-list/inputs/PropertyFilterInput.js +10 -1
  49. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  50. package/build/browser/filter-list/inputs/SingleDateFilterInput.js +4 -2
  51. package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
  52. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +9 -6
  53. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  54. package/build/browser/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  55. package/build/browser/filter-list/types/CustomRendererTypes.js.map +1 -1
  56. package/build/browser/filter-list/types/KeywordSearchTypes.js.map +1 -1
  57. package/build/browser/filter-list/types/LinkedFilterTypes.js +42 -1
  58. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  59. package/build/browser/filter-list/types/StaticValuesTypes.js.map +1 -1
  60. package/build/browser/filter-list/utils/filterStateToWhereClause.js +58 -22
  61. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  62. package/build/browser/filter-list/utils/filterValues.js +148 -2
  63. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  64. package/build/browser/filter-list/utils/narrowObjectSet.js +48 -0
  65. package/build/browser/filter-list/utils/narrowObjectSet.js.map +1 -0
  66. package/build/browser/public/experimental/filter-list.js +1 -0
  67. package/build/browser/public/experimental/filter-list.js.map +1 -1
  68. package/build/browser/styles.css +17 -0
  69. package/build/browser/tokens/component-tokens/filter-list.css +5 -0
  70. package/build/browser/util/UserAgent.js +1 -1
  71. package/build/browser/util/UserAgent.js.map +1 -1
  72. package/build/cjs/{chunk-6XRF4IAL.cjs → chunk-2AK24MNP.cjs} +4 -4
  73. package/build/cjs/{chunk-6XRF4IAL.cjs.map → chunk-2AK24MNP.cjs.map} +1 -1
  74. package/build/cjs/chunk-3DIODTDY.cjs +11 -0
  75. package/build/cjs/{chunk-774FGQHO.cjs.map → chunk-3DIODTDY.cjs.map} +1 -1
  76. package/build/cjs/{chunk-P7R4RWMU.cjs → chunk-3RKGMRPD.cjs} +4 -4
  77. package/build/cjs/{chunk-P7R4RWMU.cjs.map → chunk-3RKGMRPD.cjs.map} +1 -1
  78. package/build/cjs/chunk-ACIIYYEL.cjs +11 -0
  79. package/build/cjs/{chunk-62DGPKOC.cjs.map → chunk-ACIIYYEL.cjs.map} +1 -1
  80. package/build/cjs/{chunk-3OUALM3K.cjs → chunk-COLGW56W.cjs} +4 -4
  81. package/build/cjs/{chunk-3OUALM3K.cjs.map → chunk-COLGW56W.cjs.map} +1 -1
  82. package/build/cjs/{chunk-DKPG7O4B.cjs → chunk-GTFPQHZL.cjs} +5 -4
  83. package/build/cjs/chunk-GTFPQHZL.cjs.map +1 -0
  84. package/build/cjs/{chunk-L6QDNMMG.cjs → chunk-K3IJA7WZ.cjs} +4 -4
  85. package/build/cjs/{chunk-L6QDNMMG.cjs.map → chunk-K3IJA7WZ.cjs.map} +1 -1
  86. package/build/cjs/chunk-MAQSZDRT.cjs +11 -0
  87. package/build/cjs/{chunk-S25XCKOA.cjs.map → chunk-MAQSZDRT.cjs.map} +1 -1
  88. package/build/cjs/chunk-MHMRIDIM.cjs +11 -0
  89. package/build/cjs/{chunk-SLHKSOQC.cjs.map → chunk-MHMRIDIM.cjs.map} +1 -1
  90. package/build/cjs/{chunk-BXCHISUQ.cjs → chunk-NOONKE5X.cjs} +3 -3
  91. package/build/cjs/{chunk-BXCHISUQ.cjs.map → chunk-NOONKE5X.cjs.map} +1 -1
  92. package/build/cjs/chunk-OEESYGT4.cjs +11 -0
  93. package/build/cjs/{chunk-3Y4W37E3.cjs.map → chunk-OEESYGT4.cjs.map} +1 -1
  94. package/build/cjs/{chunk-QOI2FQSL.cjs → chunk-PUZZZTC7.cjs} +372 -157
  95. package/build/cjs/chunk-PUZZZTC7.cjs.map +1 -0
  96. package/build/cjs/{chunk-FIAYYZHY.cjs → chunk-QWKUCBXE.cjs} +4 -4
  97. package/build/cjs/{chunk-FIAYYZHY.cjs.map → chunk-QWKUCBXE.cjs.map} +1 -1
  98. package/build/cjs/public/experimental/action-form.cjs +4 -4
  99. package/build/cjs/public/experimental/action-form.d.cts +1 -1
  100. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  101. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  102. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  103. package/build/cjs/public/experimental/filter-list.cjs +17 -13
  104. package/build/cjs/public/experimental/filter-list.css +8 -0
  105. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  106. package/build/cjs/public/experimental/filter-list.d.cts +95 -25
  107. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  108. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  109. package/build/cjs/public/experimental/object-table.cjs +8 -8
  110. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  111. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  112. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  113. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  114. package/build/cjs/public/experimental.cjs +50 -46
  115. package/build/cjs/public/experimental.css +8 -0
  116. package/build/cjs/public/experimental.css.map +1 -1
  117. package/build/cjs/public/experimental.d.cts +1 -1
  118. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  119. package/build/esm/action-form/utils/getDefaultFieldDefinitions.js +1 -0
  120. package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  121. package/build/esm/filter-list/FilterInput.js +7 -0
  122. package/build/esm/filter-list/FilterInput.js.map +1 -1
  123. package/build/esm/filter-list/FilterList.js +8 -2
  124. package/build/esm/filter-list/FilterList.js.map +1 -1
  125. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  126. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  127. package/build/esm/filter-list/__tests__/aggregationMocks.js +50 -0
  128. package/build/esm/filter-list/__tests__/aggregationMocks.js.map +1 -0
  129. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -1
  130. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
  131. package/build/esm/filter-list/base/FilterInputExcludeRow.js +12 -16
  132. package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -1
  133. package/build/esm/filter-list/base/FilterListContent.js +42 -40
  134. package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
  135. package/build/esm/filter-list/base/FilterListItem.js +8 -36
  136. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  137. package/build/esm/filter-list/base/SortableFilterListItem.js +3 -1
  138. package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
  139. package/build/esm/filter-list/base/inputs/ListogramInput.js +3 -1
  140. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  141. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +6 -0
  142. package/build/esm/filter-list/base/inputs/MultiDateInput.js +2 -1
  143. package/build/esm/filter-list/base/inputs/MultiDateInput.js.map +1 -1
  144. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -3
  145. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  146. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +6 -0
  147. package/build/esm/filter-list/base/inputs/SingleDateInput.js +4 -2
  148. package/build/esm/filter-list/base/inputs/SingleDateInput.js.map +1 -1
  149. package/build/esm/filter-list/hooks/useDualScopeAggregation.js +70 -0
  150. package/build/esm/filter-list/hooks/useDualScopeAggregation.js.map +1 -0
  151. package/build/esm/filter-list/hooks/useFilterListState.js +35 -17
  152. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  153. package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js +37 -0
  154. package/build/esm/filter-list/hooks/useFilterPropertyAggregation.js.map +1 -0
  155. package/build/esm/filter-list/hooks/usePropertyAggregation.js +7 -6
  156. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  157. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +45 -22
  158. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  159. package/build/esm/filter-list/inputs/ListogramFilterInput.js +9 -7
  160. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  161. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +8 -6
  162. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  163. package/build/esm/filter-list/inputs/PropertyFilterInput.js +10 -1
  164. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  165. package/build/esm/filter-list/inputs/SingleDateFilterInput.js +4 -2
  166. package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -1
  167. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +9 -6
  168. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  169. package/build/esm/filter-list/inputs/StaticValuesFilterInput.js.map +1 -1
  170. package/build/esm/filter-list/types/CustomRendererTypes.js.map +1 -1
  171. package/build/esm/filter-list/types/KeywordSearchTypes.js.map +1 -1
  172. package/build/esm/filter-list/types/LinkedFilterTypes.js +42 -1
  173. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  174. package/build/esm/filter-list/types/StaticValuesTypes.js.map +1 -1
  175. package/build/esm/filter-list/utils/filterStateToWhereClause.js +58 -22
  176. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  177. package/build/esm/filter-list/utils/filterValues.js +148 -2
  178. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  179. package/build/esm/filter-list/utils/narrowObjectSet.js +48 -0
  180. package/build/esm/filter-list/utils/narrowObjectSet.js.map +1 -0
  181. package/build/esm/public/experimental/filter-list.js +1 -0
  182. package/build/esm/public/experimental/filter-list.js.map +1 -1
  183. package/build/esm/tokens/component-tokens/filter-list.css +5 -0
  184. package/build/esm/util/UserAgent.js +1 -1
  185. package/build/esm/util/UserAgent.js.map +1 -1
  186. package/build/types/action-form/FormFieldApi.d.ts +1 -1
  187. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  188. package/build/types/filter-list/FilterInput.d.ts +6 -1
  189. package/build/types/filter-list/FilterInput.d.ts.map +1 -1
  190. package/build/types/filter-list/FilterList.d.ts.map +1 -1
  191. package/build/types/filter-list/FilterListApi.d.ts +30 -15
  192. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  193. package/build/types/filter-list/FilterListItemApi.d.ts +15 -1
  194. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  195. package/build/types/filter-list/__tests__/aggregationMocks.d.ts +11 -0
  196. package/build/types/filter-list/__tests__/aggregationMocks.d.ts.map +1 -0
  197. package/build/types/filter-list/base/BaseFilterList.d.ts +2 -1
  198. package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -1
  199. package/build/types/filter-list/base/BaseFilterListApi.d.ts +2 -2
  200. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
  201. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -1
  202. package/build/types/filter-list/base/FilterListContent.d.ts +3 -3
  203. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
  204. package/build/types/filter-list/base/FilterListItem.d.ts +2 -1
  205. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  206. package/build/types/filter-list/base/SortableFilterListItem.d.ts +2 -1
  207. package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
  208. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  209. package/build/types/filter-list/base/inputs/MultiDateInput.d.ts.map +1 -1
  210. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  211. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts +2 -0
  212. package/build/types/filter-list/base/inputs/SingleDateInput.d.ts.map +1 -1
  213. package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts +32 -0
  214. package/build/types/filter-list/hooks/useDualScopeAggregation.d.ts.map +1 -0
  215. package/build/types/filter-list/hooks/useFilterListState.d.ts +7 -0
  216. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  217. package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts +13 -0
  218. package/build/types/filter-list/hooks/useFilterPropertyAggregation.d.ts.map +1 -0
  219. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts +6 -4
  220. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
  221. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +4 -1
  222. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
  223. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +4 -1
  224. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
  225. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +4 -1
  226. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
  227. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +7 -1
  228. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -1
  229. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +4 -1
  230. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
  231. package/build/types/filter-list/inputs/StaticValuesFilterInput.d.ts +1 -1
  232. package/build/types/filter-list/types/CustomRendererTypes.d.ts +2 -2
  233. package/build/types/filter-list/types/CustomRendererTypes.d.ts.map +1 -1
  234. package/build/types/filter-list/types/KeywordSearchTypes.d.ts +2 -2
  235. package/build/types/filter-list/types/KeywordSearchTypes.d.ts.map +1 -1
  236. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +34 -4
  237. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
  238. package/build/types/filter-list/types/StaticValuesTypes.d.ts +2 -2
  239. package/build/types/filter-list/types/StaticValuesTypes.d.ts.map +1 -1
  240. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +24 -1
  241. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  242. package/build/types/filter-list/utils/filterValues.d.ts +26 -0
  243. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  244. package/build/types/filter-list/utils/narrowObjectSet.d.ts +7 -0
  245. package/build/types/filter-list/utils/narrowObjectSet.d.ts.map +1 -0
  246. package/build/types/public/experimental/filter-list.d.ts +3 -1
  247. package/build/types/public/experimental/filter-list.d.ts.map +1 -1
  248. package/docs/CSSVariables.md +78 -17
  249. package/docs/FilterList.md +52 -6
  250. package/package.json +9 -9
  251. package/build/cjs/chunk-3Y4W37E3.cjs +0 -11
  252. package/build/cjs/chunk-62DGPKOC.cjs +0 -11
  253. package/build/cjs/chunk-774FGQHO.cjs +0 -11
  254. package/build/cjs/chunk-DKPG7O4B.cjs.map +0 -1
  255. package/build/cjs/chunk-QOI2FQSL.cjs.map +0 -1
  256. package/build/cjs/chunk-S25XCKOA.cjs +0 -11
  257. package/build/cjs/chunk-SLHKSOQC.cjs +0 -11
@@ -31,20 +31,30 @@ import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
31
31
  import { TextTagsInput } from "../base/inputs/TextTagsInput.js";
32
32
  import { TimelineInput } from "../base/inputs/TimelineInput.js";
33
33
  import { ToggleInput } from "../base/inputs/ToggleInput.js";
34
+ import { useDualScopeAggregation } from "../hooks/useDualScopeAggregation.js";
34
35
  import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
36
+ import { EMPTY_LINKED_FILTERS } from "../types/LinkedFilterTypes.js";
35
37
  import { createGroupByAggregateOptions, createNullCountAggregateOptions, createNullWhereClause } from "../utils/aggregationHelpers.js";
36
38
  import { coerceToString, coerceToStringArray } from "../utils/coerceFilterValue.js";
39
+ import { narrowObjectSet } from "../utils/narrowObjectSet.js";
37
40
  function LinkedPropertyInputInner({
38
41
  objectSet,
42
+ whereClause,
43
+ linkedFilters = EMPTY_LINKED_FILTERS,
39
44
  definition,
40
45
  filterState,
41
46
  onFilterStateChanged,
47
+ showFilteredOutValues,
42
48
  searchQuery,
43
49
  className,
44
50
  style,
45
51
  layout
46
52
  }) {
47
- const linkedObjectSet = useMemo(() => objectSet.pivotTo(definition.linkName), [objectSet, definition.linkName]);
53
+ const scoped = useMemo(() => narrowObjectSet(objectSet, whereClause, linkedFilters), [objectSet, whereClause, linkedFilters]);
54
+ const linkedObjectSet = useMemo(() => scoped.pivotTo(definition.linkName), [scoped, definition.linkName]);
55
+ // Filtered-out rows on a linked facet compare against the raw source so
56
+ // direct filters surface as count=0 entries on the linked side.
57
+ const emptySourceLinkedObjectSet = useMemo(() => showFilteredOutValues ? objectSet.pivotTo(definition.linkName) : undefined, [showFilteredOutValues, objectSet, definition.linkName]);
48
58
  const linkedObjectType = linkedObjectSet.$objectSetInternals.def;
49
59
  const linkedPropertyKey = definition.linkedPropertyKey;
50
60
  const innerState = filterState?.type === "linkedProperty" ? filterState.linkedFilterState : undefined;
@@ -154,10 +164,12 @@ function LinkedPropertyInputInner({
154
164
  return /*#__PURE__*/React.createElement(LinkedMultiSelectInput, {
155
165
  objectType: linkedObjectType,
156
166
  objectSet: linkedObjectSet,
167
+ emptySourceObjectSet: emptySourceLinkedObjectSet,
157
168
  propertyKey: linkedPropertyKey,
158
169
  selectedValues: values,
159
170
  onChange: onSelectChange,
160
171
  showCount: definition.showCount,
172
+ renderValue: definition.renderValue,
161
173
  layout: layout
162
174
  });
163
175
  }
@@ -167,10 +179,12 @@ function LinkedPropertyInputInner({
167
179
  return /*#__PURE__*/React.createElement(LinkedSingleSelectInput, {
168
180
  objectType: linkedObjectType,
169
181
  objectSet: linkedObjectSet,
182
+ emptySourceObjectSet: emptySourceLinkedObjectSet,
170
183
  propertyKey: linkedPropertyKey,
171
184
  selectedValue: value,
172
185
  onChange: onSingleSelectChange,
173
- showCount: definition.showCount
186
+ showCount: definition.showCount,
187
+ renderValue: definition.renderValue
174
188
  });
175
189
  }
176
190
  case "CONTAINS_TEXT":
@@ -225,11 +239,13 @@ function LinkedPropertyInputInner({
225
239
  return /*#__PURE__*/React.createElement(LinkedListogramInput, {
226
240
  objectType: linkedObjectType,
227
241
  objectSet: linkedObjectSet,
242
+ emptySourceObjectSet: emptySourceLinkedObjectSet,
228
243
  propertyKey: linkedPropertyKey,
229
244
  selectedValues: selectedValues,
230
245
  onChange: onExactMatchChange,
231
246
  searchQuery: searchQuery,
232
- showCount: definition.showCount
247
+ showCount: definition.showCount,
248
+ renderValue: definition.renderValue
233
249
  });
234
250
  }
235
251
  case "TEXT_TAGS":
@@ -284,20 +300,21 @@ export const LinkedPropertyInput = /*#__PURE__*/memo(LinkedPropertyInputInner);
284
300
  function LinkedMultiSelectInput({
285
301
  objectType,
286
302
  objectSet,
303
+ emptySourceObjectSet,
287
304
  propertyKey,
288
305
  selectedValues,
289
306
  onChange,
290
307
  showCount,
308
+ renderValue,
291
309
  layout
292
310
  }) {
293
- const aggregationOptions = useMemo(() => ({
294
- activeValues: selectedValues
295
- }), [selectedValues]);
296
311
  const {
297
312
  data,
298
313
  isLoading,
299
314
  error
300
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
315
+ } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
316
+ selectedValues
317
+ });
301
318
  return /*#__PURE__*/React.createElement(MultiSelectInput, {
302
319
  values: data,
303
320
  isLoading: isLoading,
@@ -305,25 +322,28 @@ function LinkedMultiSelectInput({
305
322
  selectedValues: selectedValues,
306
323
  onChange: onChange,
307
324
  showCounts: showCount,
325
+ renderValue: renderValue,
308
326
  layout: layout
309
327
  });
310
328
  }
311
329
  function LinkedSingleSelectInput({
312
330
  objectType,
313
331
  objectSet,
332
+ emptySourceObjectSet,
314
333
  propertyKey,
315
334
  selectedValue,
316
335
  onChange,
317
- showCount
336
+ showCount,
337
+ renderValue
318
338
  }) {
319
- const aggregationOptions = useMemo(() => ({
320
- activeValues: selectedValue != null ? [selectedValue] : undefined
321
- }), [selectedValue]);
339
+ const selectedValues = useMemo(() => selectedValue != null ? [selectedValue] : [], [selectedValue]);
322
340
  const {
323
341
  data,
324
342
  isLoading,
325
343
  error
326
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
344
+ } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
345
+ selectedValues
346
+ });
327
347
  return /*#__PURE__*/React.createElement(SingleSelectInput, {
328
348
  values: data,
329
349
  isLoading: isLoading,
@@ -331,27 +351,29 @@ function LinkedSingleSelectInput({
331
351
  selectedValue: selectedValue,
332
352
  onChange: onChange,
333
353
  showCounts: showCount,
354
+ renderValue: renderValue,
334
355
  ariaLabel: `Select ${propertyKey}`
335
356
  });
336
357
  }
337
358
  function LinkedListogramInput({
338
359
  objectType,
339
360
  objectSet,
361
+ emptySourceObjectSet,
340
362
  propertyKey,
341
363
  selectedValues,
342
364
  onChange,
343
365
  searchQuery,
344
- showCount
366
+ showCount,
367
+ renderValue
345
368
  }) {
346
- const aggregationOptions = useMemo(() => ({
347
- activeValues: selectedValues
348
- }), [selectedValues]);
349
369
  const {
350
370
  data,
351
371
  maxCount,
352
372
  isLoading,
353
373
  error
354
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
374
+ } = useDualScopeAggregation(objectType, propertyKey, objectSet, emptySourceObjectSet, {
375
+ selectedValues
376
+ });
355
377
  return /*#__PURE__*/React.createElement(ListogramInput, {
356
378
  values: data,
357
379
  maxCount: maxCount,
@@ -360,9 +382,13 @@ function LinkedListogramInput({
360
382
  selectedValues: selectedValues,
361
383
  onChange: onChange,
362
384
  searchQuery: searchQuery,
363
- showCount: showCount
385
+ showCount: showCount,
386
+ renderValue: renderValue
364
387
  });
365
388
  }
389
+ const TEXT_TAGS_OPTIONS = {
390
+ limit: 50
391
+ };
366
392
  function LinkedTextTagsInput({
367
393
  objectType,
368
394
  objectSet,
@@ -370,14 +396,11 @@ function LinkedTextTagsInput({
370
396
  tags,
371
397
  onChange
372
398
  }) {
373
- const aggregationOptions = useMemo(() => ({
374
- limit: 50
375
- }), []);
376
399
  const {
377
400
  data,
378
401
  isLoading,
379
402
  error
380
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
403
+ } = usePropertyAggregation(objectType, propertyKey, objectSet, TEXT_TAGS_OPTIONS);
381
404
  return /*#__PURE__*/React.createElement(TextTagsInput, {
382
405
  suggestions: data,
383
406
  isLoading: isLoading,
@@ -1 +1 @@
1
- {"version":3,"file":"LinkedPropertyInput.js","names":["useOsdkAggregation","classnames","React","memo","useCallback","useMemo","assertUnreachable","ContainsTextInput","DateRangeHistogramInput","styles","ListogramInput","MultiDateInput","MultiSelectInput","NullValueWrapper","NumberRangeInput","SingleDateInput","SingleSelectInput","TextTagsInput","TimelineInput","ToggleInput","usePropertyAggregation","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","coerceToString","coerceToStringArray","LinkedPropertyInputInner","objectSet","definition","filterState","onFilterStateChanged","searchQuery","className","style","layout","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","LinkedMultiSelectInput","objectType","propertyKey","onChange","showCount","LinkedSingleSelectInput","placeholder","String","nr","LinkedNumberRangeInput","dr","LinkedDateRangeInput","exactState","LinkedListogramInput","tags","LinkedTextTagsInput","selectedDate","Date","showClearButton","selectedDates","filter","v","showClearAll","tl","linkedProperty","LinkedPropertyInput","aggregationOptions","activeValues","data","isLoading","error","showCounts","ariaLabel","maxCount","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\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.js\";\nimport styles from \"../base/inputs/LinkedPropertyInput.module.css\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} 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 {\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 searchQuery?: string;\n className?: string;\n style?: React.CSSProperties;\n /** Layout for `MULTI_SELECT` rendering. Forwarded to `MultiSelectInput`. */\n layout?: MultiSelectInputLayout;\n}\n\nfunction LinkedPropertyInputInner<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n>({\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n searchQuery,\n className,\n style,\n layout,\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 \"MULTI_SELECT\": {\n const values = innerState?.type === \"SELECT\"\n ? coerceToStringArray(innerState.selectedValues)\n : [];\n return (\n <LinkedMultiSelectInput\n objectType={linkedObjectType}\n objectSet={linkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValues={values}\n onChange={onSelectChange}\n showCount={definition.showCount}\n layout={layout}\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 objectSet={linkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValue={value}\n onChange={onSingleSelectChange}\n showCount={definition.showCount}\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 objectSet={linkedObjectSet}\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 objectSet={linkedObjectSet}\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 objectSet={linkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValues={selectedValues}\n onChange={onExactMatchChange}\n searchQuery={searchQuery}\n showCount={definition.showCount}\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 objectSet={linkedObjectSet}\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 objectSet: ObjectSet<Q>;\n propertyKey: PropertyKeys<Q>;\n}\n\ninterface LinkedMultiSelectInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValues: string[];\n onChange: (values: string[]) => void;\n showCount?: boolean;\n layout?: MultiSelectInputLayout;\n}\n\nfunction LinkedMultiSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange,\n showCount,\n layout,\n}: LinkedMultiSelectInputProps<Q>): React.ReactElement {\n const aggregationOptions = useMemo(\n () => ({ activeValues: selectedValues }),\n [selectedValues],\n );\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n showCounts={showCount}\n layout={layout}\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 showCount?: boolean;\n}\n\nfunction LinkedSingleSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n selectedValue,\n onChange,\n showCount,\n}: LinkedSingleSelectInputProps<Q>): React.ReactElement {\n const aggregationOptions = useMemo(\n () => ({\n activeValues: selectedValue != null ? [selectedValue] : undefined,\n }),\n [selectedValue],\n );\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={onChange}\n showCounts={showCount}\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 searchQuery?: string;\n showCount?: boolean;\n}\n\nfunction LinkedListogramInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery,\n showCount,\n}: LinkedListogramInputProps<Q>): React.ReactElement {\n const aggregationOptions = useMemo(\n () => ({ activeValues: selectedValues }),\n [selectedValues],\n );\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n objectSet,\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={onChange}\n searchQuery={searchQuery}\n showCount={showCount}\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 objectSet,\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 objectSet,\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 objectSet: ObjectSet<Q>,\n) {\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet }),\n [aggregateOptions, objectSet],\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 () => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullWhereClause, nullCountAggregateOptions, objectSet],\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 objectSet,\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, objectSet);\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 objectSet,\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, objectSet);\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 <DateRangeHistogramInput\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":[]}
1
+ {"version":3,"file":"LinkedPropertyInput.js","names":["useOsdkAggregation","classnames","React","memo","useCallback","useMemo","assertUnreachable","ContainsTextInput","DateRangeHistogramInput","styles","ListogramInput","MultiDateInput","MultiSelectInput","NullValueWrapper","NumberRangeInput","SingleDateInput","SingleSelectInput","TextTagsInput","TimelineInput","ToggleInput","useDualScopeAggregation","usePropertyAggregation","EMPTY_LINKED_FILTERS","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","coerceToString","coerceToStringArray","narrowObjectSet","LinkedPropertyInputInner","objectSet","whereClause","linkedFilters","definition","filterState","onFilterStateChanged","showFilteredOutValues","searchQuery","className","style","layout","scoped","linkedObjectSet","pivotTo","linkName","emptySourceLinkedObjectSet","undefined","linkedObjectType","$objectSetInternals","def","linkedPropertyKey","innerState","type","linkedFilterState","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","LinkedMultiSelectInput","objectType","emptySourceObjectSet","propertyKey","onChange","showCount","renderValue","LinkedSingleSelectInput","placeholder","String","nr","LinkedNumberRangeInput","dr","LinkedDateRangeInput","exactState","LinkedListogramInput","tags","LinkedTextTagsInput","selectedDate","Date","showClearButton","selectedDates","filter","v","showClearAll","tl","linkedProperty","LinkedPropertyInput","data","isLoading","error","showCounts","ariaLabel","maxCount","TEXT_TAGS_OPTIONS","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 WhereClause,\n} from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\nimport { ContainsTextInput } from \"../base/inputs/ContainsTextInput.js\";\nimport { DateRangeHistogramInput } from \"../base/inputs/DateRangeHistogramInput.js\";\nimport styles from \"../base/inputs/LinkedPropertyInput.module.css\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport { MultiDateInput } from \"../base/inputs/MultiDateInput.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} 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 { useDualScopeAggregation } from \"../hooks/useDualScopeAggregation.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport {\n EMPTY_LINKED_FILTERS,\n type LinkedFilter,\n type LinkedPropertyFilterDefinition,\n} from \"../types/LinkedFilterTypes.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\nimport {\n coerceToString,\n coerceToStringArray,\n} from \"../utils/coerceFilterValue.js\";\nimport { narrowObjectSet } from \"../utils/narrowObjectSet.js\";\n\ninterface LinkedPropertyInputProps<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n> {\n objectSet: ObjectSet<Q>;\n whereClause: WhereClause<Q>;\n linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;\n definition: LinkedPropertyFilterDefinition<\n Q,\n L,\n ObjectTypeDefinition,\n PropertyKeys<ObjectTypeDefinition>\n >;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n showFilteredOutValues?: boolean;\n searchQuery?: string;\n className?: string;\n style?: React.CSSProperties;\n layout?: MultiSelectInputLayout;\n}\n\nfunction LinkedPropertyInputInner<\n Q extends ObjectTypeDefinition,\n L extends LinkNames<Q>,\n>({\n objectSet,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n definition,\n filterState,\n onFilterStateChanged,\n showFilteredOutValues,\n searchQuery,\n className,\n style,\n layout,\n}: LinkedPropertyInputProps<Q, L>): React.ReactElement {\n const scoped = useMemo(\n () => narrowObjectSet(objectSet, whereClause, linkedFilters),\n [objectSet, whereClause, linkedFilters],\n );\n const linkedObjectSet = useMemo(\n () => scoped.pivotTo(definition.linkName),\n [scoped, definition.linkName],\n );\n // Filtered-out rows on a linked facet compare against the raw source so\n // direct filters surface as count=0 entries on the linked side.\n const emptySourceLinkedObjectSet = useMemo(\n () =>\n showFilteredOutValues\n ? objectSet.pivotTo(definition.linkName)\n : undefined,\n [showFilteredOutValues, 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 \"MULTI_SELECT\": {\n const values = innerState?.type === \"SELECT\"\n ? coerceToStringArray(innerState.selectedValues)\n : [];\n return (\n <LinkedMultiSelectInput\n objectType={linkedObjectType}\n objectSet={linkedObjectSet}\n emptySourceObjectSet={emptySourceLinkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValues={values}\n onChange={onSelectChange}\n showCount={definition.showCount}\n renderValue={definition.renderValue}\n layout={layout}\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 objectSet={linkedObjectSet}\n emptySourceObjectSet={emptySourceLinkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValue={value}\n onChange={onSingleSelectChange}\n showCount={definition.showCount}\n renderValue={definition.renderValue}\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 objectSet={linkedObjectSet}\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 objectSet={linkedObjectSet}\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 objectSet={linkedObjectSet}\n emptySourceObjectSet={emptySourceLinkedObjectSet}\n propertyKey={linkedPropertyKey}\n selectedValues={selectedValues}\n onChange={onExactMatchChange}\n searchQuery={searchQuery}\n showCount={definition.showCount}\n renderValue={definition.renderValue}\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 objectSet={linkedObjectSet}\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 objectSet: ObjectSet<Q>;\n emptySourceObjectSet?: ObjectSet<Q>;\n propertyKey: PropertyKeys<Q>;\n}\n\ninterface LinkedMultiSelectInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n selectedValues: string[];\n onChange: (values: string[]) => void;\n showCount?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n layout?: MultiSelectInputLayout;\n}\n\nfunction LinkedMultiSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n showCount,\n renderValue,\n layout,\n}: LinkedMultiSelectInputProps<Q>): React.ReactElement {\n const { data, isLoading, error } = useDualScopeAggregation(\n objectType,\n propertyKey,\n objectSet,\n emptySourceObjectSet,\n { selectedValues },\n );\n\n return (\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n showCounts={showCount}\n renderValue={renderValue}\n layout={layout}\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 showCount?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n}\n\nfunction LinkedSingleSelectInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValue,\n onChange,\n showCount,\n renderValue,\n}: LinkedSingleSelectInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () => selectedValue != null ? [selectedValue] : [],\n [selectedValue],\n );\n const { data, isLoading, error } = useDualScopeAggregation(\n objectType,\n propertyKey,\n objectSet,\n emptySourceObjectSet,\n { selectedValues },\n );\n\n return (\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={onChange}\n showCounts={showCount}\n renderValue={renderValue}\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 searchQuery?: string;\n showCount?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n}\n\nfunction LinkedListogramInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n emptySourceObjectSet,\n propertyKey,\n selectedValues,\n onChange,\n searchQuery,\n showCount,\n renderValue,\n}: LinkedListogramInputProps<Q>): React.ReactElement {\n const { data, maxCount, isLoading, error } = useDualScopeAggregation(\n objectType,\n propertyKey,\n objectSet,\n emptySourceObjectSet,\n { selectedValues },\n );\n\n return (\n <ListogramInput\n values={data}\n maxCount={maxCount}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={onChange}\n searchQuery={searchQuery}\n showCount={showCount}\n renderValue={renderValue}\n />\n );\n}\n\ninterface LinkedTextTagsInputProps<Q extends ObjectTypeDefinition>\n extends LinkedAggregationInputProps<Q>\n{\n tags: string[];\n onChange: (values: string[]) => void;\n}\n\nconst TEXT_TAGS_OPTIONS = { limit: 50 } as const;\n\nfunction LinkedTextTagsInput<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n tags,\n onChange,\n}: LinkedTextTagsInputProps<Q>): React.ReactElement {\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n objectSet,\n TEXT_TAGS_OPTIONS,\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 objectSet: ObjectSet<Q>,\n) {\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey as string),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet }),\n [aggregateOptions, objectSet],\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 () => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullWhereClause, nullCountAggregateOptions, objectSet],\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 objectSet,\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, objectSet);\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 objectSet,\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, objectSet);\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 <DateRangeHistogramInput\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":[]}
@@ -17,7 +17,8 @@
17
17
  import React, { memo, useCallback, useMemo } from "react";
18
18
  import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
19
19
  import { ListogramInput } from "../base/inputs/ListogramInput.js";
20
- import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
20
+ import { useFilterPropertyAggregation } from "../hooks/useFilterPropertyAggregation.js";
21
+ import { EMPTY_LINKED_FILTERS } from "../types/LinkedFilterTypes.js";
21
22
  import { coerceToStringArray } from "../utils/coerceFilterValue.js";
22
23
  function ListogramFilterInputInner({
23
24
  objectType,
@@ -26,6 +27,8 @@ function ListogramFilterInputInner({
26
27
  filterState,
27
28
  onFilterStateChanged,
28
29
  whereClause,
30
+ linkedFilters = EMPTY_LINKED_FILTERS,
31
+ showFilteredOutValues,
29
32
  colorMap,
30
33
  displayMode,
31
34
  showCount,
@@ -51,17 +54,16 @@ function ListogramFilterInputInner({
51
54
  });
52
55
  }, [onFilterStateChanged, isExcluding]);
53
56
  const sortBy = displayMode === "minimal" ? "value" : "count";
54
- const aggregationOptions = useMemo(() => ({
55
- where: whereClause,
56
- sortBy,
57
- activeValues: selectedValues
58
- }), [whereClause, sortBy, selectedValues]);
59
57
  const {
60
58
  data,
61
59
  maxCount,
62
60
  isLoading,
63
61
  error
64
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
62
+ } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
63
+ sortBy,
64
+ selectedValues,
65
+ showFilteredOutValues
66
+ });
65
67
  return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
66
68
  excludeRowOpen: excludeRowOpen,
67
69
  filterState: filterState,
@@ -1 +1 @@
1
- {"version":3,"file":"ListogramFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","ListogramInput","usePropertyAggregation","coerceToStringArray","ListogramFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","colorMap","displayMode","showCount","maxVisibleItems","searchQuery","excludeRowOpen","renderValue","selectedValues","type","values","isExcluding","handleClearAll","handleChange","sortBy","aggregationOptions","where","activeValues","data","maxCount","isLoading","error","createElement","totalValueCount","length","onClearAll","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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\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 objectSet?: ObjectSet<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 showCount?: boolean;\n maxVisibleItems?: number;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n}\n\nfunction ListogramFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n colorMap,\n displayMode,\n showCount,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n renderValue,\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 handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\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 sortBy = displayMode === \"minimal\"\n ? \"value\" as const\n : \"count\" as const;\n const aggregationOptions = useMemo(\n () => ({ where: whereClause, sortBy, activeValues: selectedValues }),\n [whereClause, sortBy, selectedValues],\n );\n\n const { data, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\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 showCount={showCount}\n isExcluding={isExcluding}\n maxVisibleItems={maxVisibleItems}\n searchQuery={searchQuery}\n renderValue={renderValue}\n />\n </FilterInputExcludeRow>\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;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,kCAAkC;AAEjE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAkBnE,SAASC,yBAAyBA,CAAiC;EACjEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,QAAQ;EACRC,WAAW;EACXC,SAAS;EACTC,eAAe;EACfC,WAAW;EACXC,cAAc;EACdC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,cAAc,GAAGnB,OAAO,CAC5B,MACES,WAAW,EAAEW,IAAI,KAAK,aAAa,GAC/BhB,mBAAmB,CAACK,WAAW,CAACY,MAAM,CAAC,GACvC,EAAE,EACR,CAACZ,WAAW,CACd,CAAC;EACD,MAAMa,WAAW,GAAGb,WAAW,EAAEa,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGxB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBU,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE,EAAE;MACVC;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACZ,oBAAoB,EAAEY,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGzB,WAAW,CAC7BsB,MAAgB,IAAK;IACpBX,oBAAoB,CAAC;MACnBU,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACZ,oBAAoB,EAAEY,WAAW,CACpC,CAAC;EAED,MAAMG,MAAM,GAAGZ,WAAW,KAAK,SAAS,GACpC,OAAO,GACP,OAAgB;EACpB,MAAMa,kBAAkB,GAAG1B,OAAO,CAChC,OAAO;IAAE2B,KAAK,EAAEhB,WAAW;IAAEc,MAAM;IAAEG,YAAY,EAAET;EAAe,CAAC,CAAC,EACpE,CAACR,WAAW,EAAEc,MAAM,EAAEN,cAAc,CACtC,CAAC;EAED,MAAM;IAAEU,IAAI;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAG7B,sBAAsB,CACjEG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTmB,kBACF,CAAC;EAED,oBACE7B,KAAA,CAAAoC,aAAA,CAAChC,qBAAqB;IACpBgB,cAAc,EAAEA,cAAe;IAC/BR,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CwB,eAAe,EAAEL,IAAI,CAACM,MAAO;IAC7BC,UAAU,EAAEb;EAAe,gBAE3B1B,KAAA,CAAAoC,aAAA,CAAC/B,cAAc;IACbmB,MAAM,EAAEQ,IAAK;IACbC,QAAQ,EAAEA,QAAS;IACnBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbb,cAAc,EAAEA,cAAe;IAC/BkB,QAAQ,EAAEb,YAAa;IACvBZ,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBC,SAAS,EAAEA,SAAU;IACrBQ,WAAW,EAAEA,WAAY;IACzBP,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA,WAAY;IACzBE,WAAW,EAAEA;EAAY,CAC1B,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMoB,oBAAsD,gBAAGxC,IAAI,CACxEO,yBACF,CAAqC","ignoreList":[]}
1
+ {"version":3,"file":"ListogramFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","ListogramInput","useFilterPropertyAggregation","EMPTY_LINKED_FILTERS","coerceToStringArray","ListogramFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","linkedFilters","showFilteredOutValues","colorMap","displayMode","showCount","maxVisibleItems","searchQuery","excludeRowOpen","renderValue","selectedValues","type","values","isExcluding","handleClearAll","handleChange","sortBy","data","maxCount","isLoading","error","createElement","totalValueCount","length","onClearAll","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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport { ListogramInput } from \"../base/inputs/ListogramInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport {\n EMPTY_LINKED_FILTERS,\n type LinkedFilter,\n} from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface ListogramFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;\n showFilteredOutValues?: boolean;\n colorMap?: Record<string, string>;\n displayMode?: \"full\" | \"count\" | \"minimal\";\n showCount?: boolean;\n maxVisibleItems?: number;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n}\n\nfunction ListogramFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n colorMap,\n displayMode,\n showCount,\n maxVisibleItems,\n searchQuery,\n excludeRowOpen,\n renderValue,\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 handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\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 sortBy = displayMode === \"minimal\"\n ? \"value\" as const\n : \"count\" as const;\n\n const { data, maxCount, isLoading, error } = useFilterPropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n whereClause,\n linkedFilters,\n { sortBy, selectedValues, showFilteredOutValues },\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\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 showCount={showCount}\n isExcluding={isExcluding}\n maxVisibleItems={maxVisibleItems}\n searchQuery={searchQuery}\n renderValue={renderValue}\n />\n </FilterInputExcludeRow>\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;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,cAAc,QAAQ,kCAAkC;AAEjE,SAASC,4BAA4B,QAAQ,0CAA0C;AACvF,SACEC,oBAAoB,QAEf,+BAA+B;AACtC,SAASC,mBAAmB,QAAQ,+BAA+B;AAoBnE,SAASC,yBAAyBA,CAAiC;EACjEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,aAAa,GAAGT,oBAAoB;EACpCU,qBAAqB;EACrBC,QAAQ;EACRC,WAAW;EACXC,SAAS;EACTC,eAAe;EACfC,WAAW;EACXC,cAAc;EACdC;AAC4B,CAAC,EAAsB;EACnD,MAAMC,cAAc,GAAGtB,OAAO,CAC5B,MACEU,WAAW,EAAEa,IAAI,KAAK,aAAa,GAC/BlB,mBAAmB,CAACK,WAAW,CAACc,MAAM,CAAC,GACvC,EAAE,EACR,CAACd,WAAW,CACd,CAAC;EACD,MAAMe,WAAW,GAAGf,WAAW,EAAEe,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAG3B,WAAW,CAAC,MAAM;IACvCY,oBAAoB,CAAC;MACnBY,IAAI,EAAE,aAAa;MACnBC,MAAM,EAAE,EAAE;MACVC;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACd,oBAAoB,EAAEc,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAG5B,WAAW,CAC7ByB,MAAgB,IAAK;IACpBb,oBAAoB,CAAC;MACnBY,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACd,oBAAoB,EAAEc,WAAW,CACpC,CAAC;EAED,MAAMG,MAAM,GAAGZ,WAAW,KAAK,SAAS,GACpC,OAAO,GACP,OAAgB;EAEpB,MAAM;IAAEa,IAAI;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAG7B,4BAA4B,CACvEI,UAAU,EACVE,WAAW,EACXD,SAAS,EACTI,WAAW,EACXC,aAAa,EACb;IAAEe,MAAM;IAAEN,cAAc;IAAER;EAAsB,CAClD,CAAC;EAED,oBACEjB,KAAA,CAAAoC,aAAA,CAAChC,qBAAqB;IACpBmB,cAAc,EAAEA,cAAe;IAC/BV,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CuB,eAAe,EAAEL,IAAI,CAACM,MAAO;IAC7BC,UAAU,EAAEV;EAAe,gBAE3B7B,KAAA,CAAAoC,aAAA,CAAC/B,cAAc;IACbsB,MAAM,EAAEK,IAAK;IACbC,QAAQ,EAAEA,QAAS;IACnBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbV,cAAc,EAAEA,cAAe;IAC/Be,QAAQ,EAAEV,YAAa;IACvBZ,QAAQ,EAAEA,QAAS;IACnBC,WAAW,EAAEA,WAAY;IACzBC,SAAS,EAAEA,SAAU;IACrBQ,WAAW,EAAEA,WAAY;IACzBP,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA,WAAY;IACzBE,WAAW,EAAEA;EAAY,CAC1B,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMiB,oBAAsD,gBAAGxC,IAAI,CACxEQ,yBACF,CAAqC","ignoreList":[]}
@@ -17,7 +17,8 @@
17
17
  import React, { memo, useCallback, useMemo } from "react";
18
18
  import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
19
19
  import { MultiSelectInput } from "../base/inputs/MultiSelectInput.js";
20
- import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
20
+ import { useFilterPropertyAggregation } from "../hooks/useFilterPropertyAggregation.js";
21
+ import { EMPTY_LINKED_FILTERS } from "../types/LinkedFilterTypes.js";
21
22
  import { coerceToStringArray } from "../utils/coerceFilterValue.js";
22
23
  function MultiSelectFilterInputInner({
23
24
  objectType,
@@ -26,6 +27,8 @@ function MultiSelectFilterInputInner({
26
27
  filterState,
27
28
  onFilterStateChanged,
28
29
  whereClause,
30
+ linkedFilters = EMPTY_LINKED_FILTERS,
31
+ showFilteredOutValues,
29
32
  excludeRowOpen,
30
33
  renderValue,
31
34
  showCount,
@@ -47,15 +50,14 @@ function MultiSelectFilterInputInner({
47
50
  isExcluding
48
51
  });
49
52
  }, [onFilterStateChanged, isExcluding]);
50
- const aggregationOptions = useMemo(() => ({
51
- where: whereClause,
52
- activeValues: selectedValues
53
- }), [whereClause, selectedValues]);
54
53
  const {
55
54
  data,
56
55
  isLoading,
57
56
  error
58
- } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
57
+ } = useFilterPropertyAggregation(objectType, propertyKey, objectSet, whereClause, linkedFilters, {
58
+ selectedValues,
59
+ showFilteredOutValues
60
+ });
59
61
  return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
60
62
  excludeRowOpen: excludeRowOpen,
61
63
  filterState: filterState,
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","MultiSelectInput","usePropertyAggregation","coerceToStringArray","MultiSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","renderValue","showCount","layout","selectedValues","type","isExcluding","handleClearAll","handleChange","aggregationOptions","where","activeValues","data","isLoading","error","createElement","totalValueCount","length","onClearAll","values","onChange","showCounts","ariaLabel","MultiSelectFilterInput"],"sources":["MultiSelectFilterInput.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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface MultiSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n excludeRowOpen?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n showCount?: boolean;\n layout?: MultiSelectInputLayout;\n}\n\nfunction MultiSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n renderValue,\n showCount,\n layout,\n}: MultiSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause, activeValues: selectedValues }),\n [whereClause, selectedValues],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n aggregationOptions,\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n showCounts={showCount}\n ariaLabel={`Search ${propertyKey} values`}\n renderValue={renderValue}\n layout={layout}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const MultiSelectFilterInput: typeof MultiSelectFilterInputInner = memo(\n MultiSelectFilterInputInner,\n) as typeof MultiSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SACEC,gBAAgB,QAEX,oCAAoC;AAE3C,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAenE,SAASC,2BAA2BA,CAAiC;EACnEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,cAAc;EACdC,WAAW;EACXC,SAAS;EACTC;AAC8B,CAAC,EAAsB;EACrD,MAAMC,cAAc,GAAGhB,OAAO,CAC5B,MACES,WAAW,EAAEQ,IAAI,KAAK,QAAQ,GAC1Bb,mBAAmB,CAACK,WAAW,CAACO,cAAc,CAAC,GAC/C,EAAE,EACR,CAACP,WAAW,CACd,CAAC;EACD,MAAMS,WAAW,GAAGT,WAAW,EAAES,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGpB,WAAW,CAAC,MAAM;IACvCW,oBAAoB,CAAC;MACnBO,IAAI,EAAE,QAAQ;MACdD,cAAc,EAAE,EAAE;MAClBE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACR,oBAAoB,EAAEQ,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGrB,WAAW,CAC7BiB,cAAwB,IAAK;IAC5BN,oBAAoB,CAAC;MACnBO,IAAI,EAAE,QAAQ;MACdD,cAAc;MACdE;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACR,oBAAoB,EAAEQ,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGrB,OAAO,CAChC,OAAO;IAAEsB,KAAK,EAAEX,WAAW;IAAEY,YAAY,EAAEP;EAAe,CAAC,CAAC,EAC5D,CAACL,WAAW,EAAEK,cAAc,CAC9B,CAAC;EAED,MAAM;IAAEQ,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGvB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTc,kBACF,CAAC;EAED,oBACExB,KAAA,CAAA8B,aAAA,CAAC1B,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CkB,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAEX;EAAe,gBAE3BtB,KAAA,CAAA8B,aAAA,CAACzB,gBAAgB;IACf6B,MAAM,EAAEP,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbV,cAAc,EAAEA,cAAe;IAC/BgB,QAAQ,EAAEZ,YAAa;IACvBa,UAAU,EAAEnB,SAAU;IACtBoB,SAAS,EAAE,UAAU1B,WAAW,SAAU;IAC1CK,WAAW,EAAEA,WAAY;IACzBE,MAAM,EAAEA;EAAO,CAChB,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMoB,sBAA0D,gBAAGrC,IAAI,CAC5EO,2BACF,CAAuC","ignoreList":[]}
1
+ {"version":3,"file":"MultiSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","MultiSelectInput","useFilterPropertyAggregation","EMPTY_LINKED_FILTERS","coerceToStringArray","MultiSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","linkedFilters","showFilteredOutValues","excludeRowOpen","renderValue","showCount","layout","selectedValues","type","isExcluding","handleClearAll","handleChange","data","isLoading","error","createElement","totalValueCount","length","onClearAll","values","onChange","showCounts","ariaLabel","MultiSelectFilterInput"],"sources":["MultiSelectFilterInput.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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport {\n MultiSelectInput,\n type MultiSelectInputLayout,\n} from \"../base/inputs/MultiSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { useFilterPropertyAggregation } from \"../hooks/useFilterPropertyAggregation.js\";\nimport {\n EMPTY_LINKED_FILTERS,\n type LinkedFilter,\n} from \"../types/LinkedFilterTypes.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface MultiSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet?: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n linkedFilters?: ReadonlyArray<LinkedFilter<Q>>;\n showFilteredOutValues?: boolean;\n excludeRowOpen?: boolean;\n renderValue?: (value: string) => React.ReactNode;\n showCount?: boolean;\n layout?: MultiSelectInputLayout;\n}\n\nfunction MultiSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n linkedFilters = EMPTY_LINKED_FILTERS,\n showFilteredOutValues,\n excludeRowOpen,\n renderValue,\n showCount,\n layout,\n}: MultiSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValues = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToStringArray(filterState.selectedValues)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleClearAll = useCallback(() => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: [],\n isExcluding,\n });\n }, [onFilterStateChanged, isExcluding]);\n\n const handleChange = useCallback(\n (selectedValues: string[]) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const { data, isLoading, error } = useFilterPropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n objectSet,\n whereClause,\n linkedFilters,\n { selectedValues, showFilteredOutValues },\n );\n\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n totalValueCount={data.length}\n onClearAll={handleClearAll}\n >\n <MultiSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValues={selectedValues}\n onChange={handleChange}\n showCounts={showCount}\n ariaLabel={`Search ${propertyKey} values`}\n renderValue={renderValue}\n layout={layout}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const MultiSelectFilterInput: typeof MultiSelectFilterInputInner = memo(\n MultiSelectFilterInputInner,\n) as typeof MultiSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SACEC,gBAAgB,QAEX,oCAAoC;AAE3C,SAASC,4BAA4B,QAAQ,0CAA0C;AACvF,SACEC,oBAAoB,QAEf,+BAA+B;AACtC,SAASC,mBAAmB,QAAQ,+BAA+B;AAiBnE,SAASC,2BAA2BA,CAAiC;EACnEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,aAAa,GAAGT,oBAAoB;EACpCU,qBAAqB;EACrBC,cAAc;EACdC,WAAW;EACXC,SAAS;EACTC;AAC8B,CAAC,EAAsB;EACrD,MAAMC,cAAc,GAAGnB,OAAO,CAC5B,MACEU,WAAW,EAAEU,IAAI,KAAK,QAAQ,GAC1Bf,mBAAmB,CAACK,WAAW,CAACS,cAAc,CAAC,GAC/C,EAAE,EACR,CAACT,WAAW,CACd,CAAC;EACD,MAAMW,WAAW,GAAGX,WAAW,EAAEW,WAAW,IAAI,KAAK;EAErD,MAAMC,cAAc,GAAGvB,WAAW,CAAC,MAAM;IACvCY,oBAAoB,CAAC;MACnBS,IAAI,EAAE,QAAQ;MACdD,cAAc,EAAE,EAAE;MAClBE;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,CAACV,oBAAoB,EAAEU,WAAW,CAAC,CAAC;EAEvC,MAAME,YAAY,GAAGxB,WAAW,CAC7BoB,cAAwB,IAAK;IAC5BR,oBAAoB,CAAC;MACnBS,IAAI,EAAE,QAAQ;MACdD,cAAc;MACdE;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACV,oBAAoB,EAAEU,WAAW,CACpC,CAAC;EAED,MAAM;IAAEG,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGvB,4BAA4B,CAC7DI,UAAU,EACVE,WAAW,EACXD,SAAS,EACTI,WAAW,EACXC,aAAa,EACb;IAAEM,cAAc;IAAEL;EAAsB,CAC1C,CAAC;EAED,oBACEjB,KAAA,CAAA8B,aAAA,CAAC1B,qBAAqB;IACpBc,cAAc,EAAEA,cAAe;IAC/BL,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CiB,eAAe,EAAEJ,IAAI,CAACK,MAAO;IAC7BC,UAAU,EAAER;EAAe,gBAE3BzB,KAAA,CAAA8B,aAAA,CAACzB,gBAAgB;IACf6B,MAAM,EAAEP,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbP,cAAc,EAAEA,cAAe;IAC/Ba,QAAQ,EAAET,YAAa;IACvBU,UAAU,EAAEhB,SAAU;IACtBiB,SAAS,EAAE,UAAUzB,WAAW,SAAU;IAC1CO,WAAW,EAAEA,WAAY;IACzBE,MAAM,EAAEA;EAAO,CAChB,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMiB,sBAA0D,gBAAGrC,IAAI,CAC5EQ,2BACF,CAAuC","ignoreList":[]}
@@ -34,6 +34,8 @@ function PropertyFilterInputInner({
34
34
  filterState,
35
35
  onFilterStateChanged,
36
36
  whereClause,
37
+ linkedFilters,
38
+ showFilteredOutValues,
37
39
  searchQuery,
38
40
  excludeRowOpen,
39
41
  layout
@@ -83,6 +85,8 @@ function PropertyFilterInputInner({
83
85
  filterState: filterState,
84
86
  onFilterStateChanged: onFilterStateChanged,
85
87
  whereClause: whereClause,
88
+ linkedFilters: linkedFilters,
89
+ showFilteredOutValues: showFilteredOutValues,
86
90
  excludeRowOpen: excludeRowOpen,
87
91
  renderValue: definition.renderValue,
88
92
  showCount: definition.showCount
@@ -95,6 +99,8 @@ function PropertyFilterInputInner({
95
99
  filterState: filterState,
96
100
  onFilterStateChanged: onFilterStateChanged,
97
101
  whereClause: whereClause,
102
+ linkedFilters: linkedFilters,
103
+ showFilteredOutValues: showFilteredOutValues,
98
104
  excludeRowOpen: excludeRowOpen,
99
105
  renderValue: definition.renderValue,
100
106
  showCount: definition.showCount,
@@ -103,7 +109,8 @@ function PropertyFilterInputInner({
103
109
  case "SINGLE_DATE":
104
110
  return /*#__PURE__*/React.createElement(SingleDateFilterInput, {
105
111
  filterState: filterState,
106
- onFilterStateChanged: onFilterStateChanged
112
+ onFilterStateChanged: onFilterStateChanged,
113
+ formatDate: definition.formatDate
107
114
  });
108
115
  case "MULTI_DATE":
109
116
  return /*#__PURE__*/React.createElement(MultiDateFilterInput, {
@@ -119,6 +126,8 @@ function PropertyFilterInputInner({
119
126
  filterState: filterState,
120
127
  onFilterStateChanged: onFilterStateChanged,
121
128
  whereClause: whereClause,
129
+ linkedFilters: linkedFilters,
130
+ showFilteredOutValues: showFilteredOutValues,
122
131
  colorMap: definition.colorMap,
123
132
  displayMode: definition.listogramConfig?.displayMode,
124
133
  showCount: definition.showCount,