@osdk/react-components 0.2.0-beta.21 → 0.2.0-beta.22

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/AGENTS.md +14 -97
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +1 -1
  4. package/build/browser/action-form/ActionFormApi.js.map +1 -1
  5. package/build/browser/action-form/BaseForm.js +18 -5
  6. package/build/browser/action-form/BaseForm.js.map +1 -1
  7. package/build/browser/action-form/BaseForm.module.css +38 -0
  8. package/build/browser/action-form/BaseForm.module.css.js +8 -0
  9. package/build/browser/action-form/FormField.js +42 -0
  10. package/build/browser/action-form/FormField.js.map +1 -0
  11. package/build/browser/action-form/FormField.module.css +41 -0
  12. package/build/browser/action-form/FormField.module.css.js +10 -0
  13. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  14. package/build/browser/action-form/FormHeader.js +26 -0
  15. package/build/browser/action-form/FormHeader.js.map +1 -0
  16. package/build/browser/action-form/FormHeader.module.css +26 -0
  17. package/build/browser/action-form/FormHeader.module.css.js +6 -0
  18. package/build/browser/action-form/fields/FormFieldRenderer.js +7 -5
  19. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  20. package/build/browser/action-form/fields/TextInputField.js +2 -0
  21. package/build/browser/action-form/fields/TextInputField.js.map +1 -1
  22. package/build/browser/action-form/fields/TextInputField.module.css +56 -0
  23. package/build/browser/action-form/fields/TextInputField.module.css.js +6 -0
  24. package/build/browser/base-components/checkbox/Checkbox.js +2 -2
  25. package/build/browser/base-components/checkbox/Checkbox.js.map +1 -1
  26. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
  27. package/build/browser/base-components/combobox/Combobox.js +3 -8
  28. package/build/browser/base-components/combobox/Combobox.js.map +1 -1
  29. package/build/browser/base-components/combobox/Combobox.module.css +0 -3
  30. package/build/browser/base-components/draggable-list/DraggableList.js +2 -4
  31. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
  32. package/build/browser/base-components/search-bar/SearchBar.module.css +2 -2
  33. package/build/browser/base-components/select/Select.js +1 -3
  34. package/build/browser/base-components/select/Select.js.map +1 -1
  35. package/build/browser/base-components/select/Select.module.css +0 -2
  36. package/build/browser/base-components/switch/Switch.module.css +0 -1
  37. package/build/browser/filter-list/FilterInput.js +14 -5
  38. package/build/browser/filter-list/FilterInput.js.map +1 -1
  39. package/build/browser/filter-list/FilterList.js +13 -5
  40. package/build/browser/filter-list/FilterList.js.map +1 -1
  41. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  42. package/build/browser/filter-list/base/AddFilterPopover.js +4 -3
  43. package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -1
  44. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -1
  45. package/build/browser/filter-list/base/ExcludeDropdown.js +61 -0
  46. package/build/browser/filter-list/base/ExcludeDropdown.js.map +1 -0
  47. package/build/browser/filter-list/base/ExcludeDropdown.module.css +94 -0
  48. package/build/browser/filter-list/base/ExcludeDropdown.module.css.js +12 -0
  49. package/build/browser/filter-list/base/FilterIcons.js +0 -39
  50. package/build/browser/filter-list/base/FilterIcons.js.map +1 -1
  51. package/build/browser/filter-list/base/FilterInputExcludeRow.js +55 -0
  52. package/build/browser/filter-list/base/FilterInputExcludeRow.js.map +1 -0
  53. package/build/browser/filter-list/base/FilterListItem.js +72 -23
  54. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  55. package/build/browser/filter-list/base/FilterListItem.module.css +96 -20
  56. package/build/browser/filter-list/base/FilterListItem.module.css.js +7 -2
  57. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +2 -2
  58. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  59. package/build/browser/filter-list/base/inputs/ContainsTextInput.js +2 -6
  60. package/build/browser/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
  61. package/build/browser/filter-list/base/inputs/ListogramInput.js +2 -2
  62. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  63. package/build/browser/filter-list/base/inputs/RangeInput.js +2 -2
  64. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  65. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +1 -3
  66. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  67. package/build/browser/filter-list/base/inputs/{useStaleData.js → useStableData.js} +5 -5
  68. package/build/browser/filter-list/base/inputs/useStableData.js.map +1 -0
  69. package/build/browser/filter-list/hooks/usePropertyAggregation.js +3 -2
  70. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  71. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +15 -5
  72. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -1
  73. package/build/browser/filter-list/inputs/DateRangeFilterInput.js +10 -6
  74. package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
  75. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +41 -18
  76. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  77. package/build/browser/filter-list/inputs/ListogramFilterInput.js +15 -5
  78. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  79. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +12 -4
  80. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  81. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +10 -6
  82. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  83. package/build/browser/filter-list/inputs/PropertyFilterInput.js +36 -10
  84. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  85. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +12 -4
  86. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  87. package/build/browser/filter-list/inputs/TextTagsFilterInput.js +12 -4
  88. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  89. package/build/browser/filter-list/utils/filterValues.js +29 -1
  90. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  91. package/build/browser/object-table/LoadingCell.module.css +0 -1
  92. package/build/browser/object-table/MultiColumnSortDialog.js +1 -3
  93. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
  94. package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -1
  95. package/build/browser/object-table/TableCell.module.css +1 -1
  96. package/build/browser/object-table/TableHeader.module.css +2 -2
  97. package/build/browser/object-table/TableHeaderWithPopover.js +2 -4
  98. package/build/browser/object-table/TableHeaderWithPopover.js.map +1 -1
  99. package/build/browser/object-table/TableHeaderWithPopover.module.css +1 -0
  100. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.module.css +0 -1
  101. package/build/browser/public/experimental.js +2 -0
  102. package/build/browser/public/experimental.js.map +1 -1
  103. package/build/browser/styles.css +372 -38
  104. package/build/cjs/public/experimental.cjs +1882 -1068
  105. package/build/cjs/public/experimental.cjs.map +1 -1
  106. package/build/cjs/public/experimental.css +244 -38
  107. package/build/cjs/public/experimental.css.map +1 -1
  108. package/build/cjs/public/experimental.d.cts +420 -11
  109. package/build/esm/action-form/ActionFormApi.js.map +1 -1
  110. package/build/esm/action-form/BaseForm.js +18 -5
  111. package/build/esm/action-form/BaseForm.js.map +1 -1
  112. package/build/esm/action-form/BaseForm.module.css +38 -0
  113. package/build/esm/action-form/FormField.js +42 -0
  114. package/build/esm/action-form/FormField.js.map +1 -0
  115. package/build/esm/action-form/FormField.module.css +41 -0
  116. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  117. package/build/esm/action-form/FormHeader.js +26 -0
  118. package/build/esm/action-form/FormHeader.js.map +1 -0
  119. package/build/esm/action-form/FormHeader.module.css +26 -0
  120. package/build/esm/action-form/fields/FormFieldRenderer.js +7 -5
  121. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  122. package/build/esm/action-form/fields/TextInputField.js +2 -0
  123. package/build/esm/action-form/fields/TextInputField.js.map +1 -1
  124. package/build/esm/action-form/fields/TextInputField.module.css +56 -0
  125. package/build/esm/base-components/checkbox/Checkbox.js +2 -2
  126. package/build/esm/base-components/checkbox/Checkbox.js.map +1 -1
  127. package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
  128. package/build/esm/base-components/combobox/Combobox.js +3 -8
  129. package/build/esm/base-components/combobox/Combobox.js.map +1 -1
  130. package/build/esm/base-components/combobox/Combobox.module.css +0 -3
  131. package/build/esm/base-components/draggable-list/DraggableList.js +2 -4
  132. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
  133. package/build/esm/base-components/search-bar/SearchBar.module.css +2 -2
  134. package/build/esm/base-components/select/Select.js +1 -3
  135. package/build/esm/base-components/select/Select.js.map +1 -1
  136. package/build/esm/base-components/select/Select.module.css +0 -2
  137. package/build/esm/base-components/switch/Switch.module.css +0 -1
  138. package/build/esm/filter-list/FilterInput.js +14 -5
  139. package/build/esm/filter-list/FilterInput.js.map +1 -1
  140. package/build/esm/filter-list/FilterList.js +13 -5
  141. package/build/esm/filter-list/FilterList.js.map +1 -1
  142. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  143. package/build/esm/filter-list/base/AddFilterPopover.js +4 -3
  144. package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -1
  145. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -1
  146. package/build/esm/filter-list/base/ExcludeDropdown.js +61 -0
  147. package/build/esm/filter-list/base/ExcludeDropdown.js.map +1 -0
  148. package/build/esm/filter-list/base/ExcludeDropdown.module.css +94 -0
  149. package/build/esm/filter-list/base/FilterIcons.js +0 -39
  150. package/build/esm/filter-list/base/FilterIcons.js.map +1 -1
  151. package/build/esm/filter-list/base/FilterInputExcludeRow.js +55 -0
  152. package/build/esm/filter-list/base/FilterInputExcludeRow.js.map +1 -0
  153. package/build/esm/filter-list/base/FilterListItem.js +72 -23
  154. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  155. package/build/esm/filter-list/base/FilterListItem.module.css +96 -20
  156. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +2 -2
  157. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  158. package/build/esm/filter-list/base/inputs/ContainsTextInput.js +2 -6
  159. package/build/esm/filter-list/base/inputs/ContainsTextInput.js.map +1 -1
  160. package/build/esm/filter-list/base/inputs/ListogramInput.js +2 -2
  161. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  162. package/build/esm/filter-list/base/inputs/RangeInput.js +2 -2
  163. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  164. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +1 -3
  165. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  166. package/build/esm/filter-list/base/inputs/{useStaleData.js → useStableData.js} +5 -5
  167. package/build/esm/filter-list/base/inputs/useStableData.js.map +1 -0
  168. package/build/esm/filter-list/hooks/usePropertyAggregation.js +3 -2
  169. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  170. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +15 -5
  171. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -1
  172. package/build/esm/filter-list/inputs/DateRangeFilterInput.js +10 -6
  173. package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -1
  174. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +41 -18
  175. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -1
  176. package/build/esm/filter-list/inputs/ListogramFilterInput.js +15 -5
  177. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -1
  178. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +12 -4
  179. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -1
  180. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +10 -6
  181. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -1
  182. package/build/esm/filter-list/inputs/PropertyFilterInput.js +36 -10
  183. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -1
  184. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +12 -4
  185. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -1
  186. package/build/esm/filter-list/inputs/TextTagsFilterInput.js +12 -4
  187. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -1
  188. package/build/esm/filter-list/utils/filterValues.js +29 -1
  189. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  190. package/build/esm/object-table/LoadingCell.module.css +0 -1
  191. package/build/esm/object-table/MultiColumnSortDialog.js +1 -3
  192. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
  193. package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -1
  194. package/build/esm/object-table/TableCell.module.css +1 -1
  195. package/build/esm/object-table/TableHeader.module.css +2 -2
  196. package/build/esm/object-table/TableHeaderWithPopover.js +2 -4
  197. package/build/esm/object-table/TableHeaderWithPopover.js.map +1 -1
  198. package/build/esm/object-table/TableHeaderWithPopover.module.css +1 -0
  199. package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.module.css +0 -1
  200. package/build/esm/public/experimental.js +2 -0
  201. package/build/esm/public/experimental.js.map +1 -1
  202. package/build/types/action-form/ActionFormApi.d.ts +1 -0
  203. package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
  204. package/build/types/action-form/BaseForm.d.ts.map +1 -1
  205. package/build/types/action-form/FormField.d.ts +11 -0
  206. package/build/types/action-form/FormField.d.ts.map +1 -0
  207. package/build/types/action-form/FormFieldApi.d.ts +1 -1
  208. package/build/types/action-form/FormHeader.d.ts +6 -0
  209. package/build/types/action-form/FormHeader.d.ts.map +1 -0
  210. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  211. package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
  212. package/build/types/filter-list/FilterInput.d.ts +3 -1
  213. package/build/types/filter-list/FilterInput.d.ts.map +1 -1
  214. package/build/types/filter-list/FilterListApi.d.ts +12 -9
  215. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  216. package/build/types/filter-list/base/AddFilterPopover.d.ts +2 -1
  217. package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -1
  218. package/build/types/filter-list/base/BaseFilterListApi.d.ts +2 -0
  219. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -1
  220. package/build/types/filter-list/base/ExcludeDropdown.d.ts +8 -0
  221. package/build/types/filter-list/base/ExcludeDropdown.d.ts.map +1 -0
  222. package/build/types/filter-list/base/FilterIcons.d.ts +0 -2
  223. package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -1
  224. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts +12 -0
  225. package/build/types/filter-list/base/FilterInputExcludeRow.d.ts.map +1 -0
  226. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  227. package/build/types/filter-list/base/inputs/useStableData.d.ts +1 -0
  228. package/build/types/filter-list/base/inputs/useStableData.d.ts.map +1 -0
  229. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -2
  230. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
  231. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +5 -2
  232. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -1
  233. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +3 -2
  234. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -1
  235. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts +2 -1
  236. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -1
  237. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +5 -2
  238. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -1
  239. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +4 -2
  240. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -1
  241. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +3 -2
  242. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -1
  243. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +3 -1
  244. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -1
  245. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +4 -2
  246. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -1
  247. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +4 -2
  248. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -1
  249. package/build/types/filter-list/utils/filterValues.d.ts +2 -0
  250. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  251. package/build/types/public/experimental.d.ts +4 -0
  252. package/build/types/public/experimental.d.ts.map +1 -1
  253. package/package.json +4 -4
  254. package/build/browser/filter-list/base/inputs/useStaleData.js.map +0 -1
  255. package/build/esm/filter-list/base/inputs/useStaleData.js.map +0 -1
  256. package/build/types/filter-list/base/inputs/useStaleData.d.ts +0 -1
  257. package/build/types/filter-list/base/inputs/useStaleData.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","numberRangeState","type","undefined","includeNull","handleNullChange","minValue","maxValue","handleRangeChange","aggregateOptions","histogramArgs","aggregate","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullWhereClause","nullCountArgs","where","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { ObjectTypeDefinition } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions }),\n [aggregateOptions],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\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];\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 const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey),\n [propertyKey],\n );\n\n const nullCountArgs = useMemo(\n () => ({ where: nullWhereClause, aggregate: nullCountAggregateOptions }),\n [nullWhereClause, nullCountAggregateOptions],\n );\n\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError,\n } = 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 (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={nullLoading}\n error={nullError}\n includeNull={includeNull}\n onIncludeNullChange={handleNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={histLoading}\n minValue={numberRangeState?.minValue}\n maxValue={numberRangeState?.maxValue}\n onChange={handleRangeChange}\n />\n </NullValueWrapper>\n );\n}\n\nexport const NumberRangeFilterInput: typeof NumberRangeFilterInputInner = memo(\n NumberRangeFilterInputInner,\n) as typeof NumberRangeFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"NumberRangeFilterInput.js","names":["useOsdkAggregation","React","memo","useCallback","useMemo","NullValueWrapper","NumberRangeInput","createGroupByAggregateOptions","createNullCountAggregateOptions","createNullWhereClause","NumberRangeFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","numberRangeState","type","undefined","includeNull","handleNullChange","minValue","maxValue","handleRangeChange","aggregateOptions","histogramArgs","aggregate","data","aggregateData","isLoading","histLoading","valueCountPairs","pairs","item","rawValue","$group","parsed","parseFloat","String","isNaN","push","value","count","$count","nullCountAggregateOptions","nullWhereClause","nullCountArgs","where","nullCountData","nullLoading","error","nullError","nullCount","result","createElement","onIncludeNullChange","onChange","NumberRangeFilterInput"],"sources":["NumberRangeFilterInput.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 { ObjectSet, ObjectTypeDefinition } from \"@osdk/api\";\nimport { useOsdkAggregation } from \"@osdk/react/experimental\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { NullValueWrapper } from \"../base/inputs/NullValueWrapper.js\";\nimport { NumberRangeInput } from \"../base/inputs/NumberRangeInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport {\n createGroupByAggregateOptions,\n createNullCountAggregateOptions,\n createNullWhereClause,\n} from \"../utils/aggregationHelpers.js\";\n\ninterface NumberRangeFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n}\n\nfunction NumberRangeFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n}: NumberRangeFilterInputProps<Q>): React.ReactElement {\n const numberRangeState = filterState?.type === \"NUMBER_RANGE\"\n ? filterState\n : undefined;\n const includeNull = filterState?.includeNull;\n\n const handleNullChange = useCallback(\n (includeNull: boolean) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue: numberRangeState?.minValue,\n maxValue: numberRangeState?.maxValue,\n includeNull,\n });\n },\n [\n onFilterStateChanged,\n numberRangeState?.minValue,\n numberRangeState?.maxValue,\n ],\n );\n\n const handleRangeChange = useCallback(\n (minValue: number | undefined, maxValue: number | undefined) => {\n onFilterStateChanged({\n type: \"NUMBER_RANGE\",\n minValue,\n maxValue,\n includeNull,\n });\n },\n [onFilterStateChanged, includeNull],\n );\n\n const aggregateOptions = useMemo(\n () => createGroupByAggregateOptions<Q>(propertyKey),\n [propertyKey],\n );\n\n const histogramArgs = useMemo(\n () => ({ aggregate: aggregateOptions, objectSet }),\n [aggregateOptions, objectSet],\n );\n\n const { data: aggregateData, isLoading: histLoading } = useOsdkAggregation(\n objectType,\n histogramArgs,\n );\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];\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 const nullCountAggregateOptions = useMemo(\n () => createNullCountAggregateOptions<Q>(),\n [],\n );\n\n const nullWhereClause = useMemo(\n () => createNullWhereClause<Q>(propertyKey),\n [propertyKey],\n );\n\n const nullCountArgs = useMemo(\n () => ({\n where: nullWhereClause,\n aggregate: nullCountAggregateOptions,\n objectSet,\n }),\n [nullWhereClause, nullCountAggregateOptions, objectSet],\n );\n\n const {\n data: nullCountData,\n isLoading: nullLoading,\n error: nullError,\n } = 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 const isLoading = histLoading || nullLoading;\n\n return (\n <NullValueWrapper\n nullCount={nullCount}\n isLoading={isLoading}\n error={nullError}\n includeNull={includeNull}\n onIncludeNullChange={handleNullChange}\n >\n <NumberRangeInput\n valueCountPairs={valueCountPairs}\n isLoading={isLoading}\n minValue={numberRangeState?.minValue}\n maxValue={numberRangeState?.maxValue}\n onChange={handleRangeChange}\n />\n </NullValueWrapper>\n );\n}\n\nexport const NumberRangeFilterInput: typeof NumberRangeFilterInputInner = memo(\n NumberRangeFilterInputInner,\n) as typeof NumberRangeFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import React, { memo } from "react";
18
+ import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
18
19
  import { CheckboxListFilterInput } from "./CheckboxListFilterInput.js";
19
20
  import { ContainsTextFilterInput } from "./ContainsTextFilterInput.js";
20
21
  import { DateRangeFilterInput } from "./DateRangeFilterInput.js";
@@ -29,27 +30,37 @@ import { TimelineFilterInput } from "./TimelineFilterInput.js";
29
30
  import { ToggleFilterInput } from "./ToggleFilterInput.js";
30
31
  function PropertyFilterInputInner({
31
32
  objectType,
33
+ objectSet,
32
34
  definition,
33
35
  filterState,
34
36
  onFilterStateChanged,
35
- whereClause
37
+ whereClause,
38
+ searchQuery,
39
+ excludeRowOpen
36
40
  }) {
37
41
  switch (definition.filterComponent) {
38
42
  case "CHECKBOX_LIST":
39
43
  return /*#__PURE__*/React.createElement(CheckboxListFilterInput, {
40
44
  objectType: objectType,
45
+ objectSet: objectSet,
41
46
  propertyKey: definition.key,
42
47
  filterState: filterState,
43
48
  onFilterStateChanged: onFilterStateChanged,
44
49
  whereClause: whereClause,
45
- colorMap: definition.colorMap
50
+ colorMap: definition.colorMap,
51
+ searchQuery: searchQuery,
52
+ excludeRowOpen: excludeRowOpen
46
53
  });
47
54
  case "CONTAINS_TEXT":
48
- return /*#__PURE__*/React.createElement(ContainsTextFilterInput, {
55
+ return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
56
+ excludeRowOpen: excludeRowOpen,
57
+ filterState: filterState,
58
+ onFilterStateChanged: onFilterStateChanged
59
+ }, /*#__PURE__*/React.createElement(ContainsTextFilterInput, {
49
60
  propertyKey: definition.key,
50
61
  filterState: filterState,
51
62
  onFilterStateChanged: onFilterStateChanged
52
- });
63
+ }));
53
64
  case "TOGGLE":
54
65
  return /*#__PURE__*/React.createElement(ToggleFilterInput, {
55
66
  filterState: filterState,
@@ -58,6 +69,7 @@ function PropertyFilterInputInner({
58
69
  case "NUMBER_RANGE":
59
70
  return /*#__PURE__*/React.createElement(NumberRangeFilterInput, {
60
71
  objectType: objectType,
72
+ objectSet: objectSet,
61
73
  propertyKey: definition.key,
62
74
  filterState: filterState,
63
75
  onFilterStateChanged: onFilterStateChanged
@@ -65,6 +77,7 @@ function PropertyFilterInputInner({
65
77
  case "DATE_RANGE":
66
78
  return /*#__PURE__*/React.createElement(DateRangeFilterInput, {
67
79
  objectType: objectType,
80
+ objectSet: objectSet,
68
81
  propertyKey: definition.key,
69
82
  filterState: filterState,
70
83
  onFilterStateChanged: onFilterStateChanged
@@ -72,18 +85,22 @@ function PropertyFilterInputInner({
72
85
  case "SINGLE_SELECT":
73
86
  return /*#__PURE__*/React.createElement(SingleSelectFilterInput, {
74
87
  objectType: objectType,
88
+ objectSet: objectSet,
75
89
  propertyKey: definition.key,
76
90
  filterState: filterState,
77
91
  onFilterStateChanged: onFilterStateChanged,
78
- whereClause: whereClause
92
+ whereClause: whereClause,
93
+ excludeRowOpen: excludeRowOpen
79
94
  });
80
95
  case "MULTI_SELECT":
81
96
  return /*#__PURE__*/React.createElement(MultiSelectFilterInput, {
82
97
  objectType: objectType,
98
+ objectSet: objectSet,
83
99
  propertyKey: definition.key,
84
100
  filterState: filterState,
85
101
  onFilterStateChanged: onFilterStateChanged,
86
- whereClause: whereClause
102
+ whereClause: whereClause,
103
+ excludeRowOpen: excludeRowOpen
87
104
  });
88
105
  case "SINGLE_DATE":
89
106
  return /*#__PURE__*/React.createElement(SingleDateFilterInput, {
@@ -98,27 +115,36 @@ function PropertyFilterInputInner({
98
115
  case "LISTOGRAM":
99
116
  return /*#__PURE__*/React.createElement(ListogramFilterInput, {
100
117
  objectType: objectType,
118
+ objectSet: objectSet,
101
119
  propertyKey: definition.key,
102
120
  filterState: filterState,
103
121
  onFilterStateChanged: onFilterStateChanged,
104
122
  whereClause: whereClause,
105
123
  colorMap: definition.colorMap,
106
124
  displayMode: definition.listogramConfig?.displayMode,
107
- maxVisibleItems: definition.listogramConfig?.maxVisibleItems
125
+ maxVisibleItems: definition.listogramConfig?.maxVisibleItems,
126
+ searchQuery: searchQuery,
127
+ excludeRowOpen: excludeRowOpen
108
128
  });
109
129
  case "TEXT_TAGS":
110
130
  return /*#__PURE__*/React.createElement(TextTagsFilterInput, {
111
131
  objectType: objectType,
132
+ objectSet: objectSet,
112
133
  propertyKey: definition.key,
113
134
  filterState: filterState,
114
135
  onFilterStateChanged: onFilterStateChanged,
115
- whereClause: whereClause
136
+ whereClause: whereClause,
137
+ excludeRowOpen: excludeRowOpen
116
138
  });
117
139
  case "TIMELINE":
118
- return /*#__PURE__*/React.createElement(TimelineFilterInput, {
140
+ return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
141
+ excludeRowOpen: excludeRowOpen,
119
142
  filterState: filterState,
120
143
  onFilterStateChanged: onFilterStateChanged
121
- });
144
+ }, /*#__PURE__*/React.createElement(TimelineFilterInput, {
145
+ filterState: filterState,
146
+ onFilterStateChanged: onFilterStateChanged
147
+ }));
122
148
  default:
123
149
  return /*#__PURE__*/React.createElement("div", {
124
150
  "data-unsupported": "true"
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyFilterInput.js","names":["React","memo","CheckboxListFilterInput","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","definition","filterState","onFilterStateChanged","whereClause","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { CheckboxListFilterInput } from \"./CheckboxListFilterInput.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CHECKBOX_LIST\":\n return (\n <CheckboxListFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n />\n );\n\n case \"CONTAINS_TEXT\":\n return (\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n />\n );\n\n case \"TIMELINE\":\n return (\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"PropertyFilterInput.js","names":["React","memo","FilterInputExcludeRow","CheckboxListFilterInput","ContainsTextFilterInput","DateRangeFilterInput","ListogramFilterInput","MultiDateFilterInput","MultiSelectFilterInput","NumberRangeFilterInput","SingleDateFilterInput","SingleSelectFilterInput","TextTagsFilterInput","TimelineFilterInput","ToggleFilterInput","PropertyFilterInputInner","objectType","objectSet","definition","filterState","onFilterStateChanged","whereClause","searchQuery","excludeRowOpen","filterComponent","createElement","propertyKey","key","colorMap","displayMode","listogramConfig","maxVisibleItems","PropertyFilterInput"],"sources":["PropertyFilterInput.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 { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { FilterInputExcludeRow } from \"../base/FilterInputExcludeRow.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { CheckboxListFilterInput } from \"./CheckboxListFilterInput.js\";\nimport { ContainsTextFilterInput } from \"./ContainsTextFilterInput.js\";\nimport { DateRangeFilterInput } from \"./DateRangeFilterInput.js\";\nimport { ListogramFilterInput } from \"./ListogramFilterInput.js\";\nimport { MultiDateFilterInput } from \"./MultiDateFilterInput.js\";\nimport { MultiSelectFilterInput } from \"./MultiSelectFilterInput.js\";\nimport { NumberRangeFilterInput } from \"./NumberRangeFilterInput.js\";\nimport { SingleDateFilterInput } from \"./SingleDateFilterInput.js\";\nimport { SingleSelectFilterInput } from \"./SingleSelectFilterInput.js\";\nimport { TextTagsFilterInput } from \"./TextTagsFilterInput.js\";\nimport { TimelineFilterInput } from \"./TimelineFilterInput.js\";\nimport { ToggleFilterInput } from \"./ToggleFilterInput.js\";\n\ninterface PropertyFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: Extract<FilterDefinitionUnion<Q>, { type: \"PROPERTY\" }>;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n searchQuery?: string;\n excludeRowOpen?: boolean;\n}\n\nfunction PropertyFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterState,\n onFilterStateChanged,\n whereClause,\n searchQuery,\n excludeRowOpen,\n}: PropertyFilterInputProps<Q>): React.ReactElement {\n switch (definition.filterComponent) {\n case \"CHECKBOX_LIST\":\n return (\n <CheckboxListFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"CONTAINS_TEXT\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <ContainsTextFilterInput\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n case \"TOGGLE\":\n return (\n <ToggleFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"NUMBER_RANGE\":\n return (\n <NumberRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"DATE_RANGE\":\n return (\n <DateRangeFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"SINGLE_SELECT\":\n return (\n <SingleSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"MULTI_SELECT\":\n return (\n <MultiSelectFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"SINGLE_DATE\":\n return (\n <SingleDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"MULTI_DATE\":\n return (\n <MultiDateFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n );\n\n case \"LISTOGRAM\":\n return (\n <ListogramFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n colorMap={definition.colorMap}\n displayMode={definition.listogramConfig?.displayMode}\n maxVisibleItems={definition.listogramConfig?.maxVisibleItems}\n searchQuery={searchQuery}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TEXT_TAGS\":\n return (\n <TextTagsFilterInput\n objectType={objectType}\n objectSet={objectSet}\n propertyKey={definition.key}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n excludeRowOpen={excludeRowOpen}\n />\n );\n\n case \"TIMELINE\":\n return (\n <FilterInputExcludeRow\n excludeRowOpen={excludeRowOpen}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n >\n <TimelineFilterInput\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n />\n </FilterInputExcludeRow>\n );\n\n default:\n return (\n <div data-unsupported=\"true\">\n Unsupported filter component: {definition.filterComponent}\n </div>\n );\n }\n}\n\nexport const PropertyFilterInput: typeof PropertyFilterInputInner = memo(\n PropertyFilterInputInner,\n) as typeof PropertyFilterInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -15,15 +15,18 @@
15
15
  */
16
16
 
17
17
  import React, { memo, useCallback, useMemo } from "react";
18
+ import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
18
19
  import { SingleSelectInput } from "../base/inputs/SingleSelectInput.js";
19
20
  import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
20
21
  import { coerceToString } from "../utils/coerceFilterValue.js";
21
22
  function SingleSelectFilterInputInner({
22
23
  objectType,
24
+ objectSet,
23
25
  propertyKey,
24
26
  filterState,
25
27
  onFilterStateChanged,
26
- whereClause
28
+ whereClause,
29
+ excludeRowOpen
27
30
  }) {
28
31
  const selectedValue = useMemo(() => filterState?.type === "SELECT" ? coerceToString(filterState.selectedValues[0]) : undefined, [filterState]);
29
32
  const isExcluding = filterState?.isExcluding ?? false;
@@ -41,15 +44,20 @@ function SingleSelectFilterInputInner({
41
44
  data,
42
45
  isLoading,
43
46
  error
44
- } = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
45
- return /*#__PURE__*/React.createElement(SingleSelectInput, {
47
+ } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
48
+ return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
49
+ excludeRowOpen: excludeRowOpen,
50
+ filterState: filterState,
51
+ onFilterStateChanged: onFilterStateChanged,
52
+ totalValueCount: data.length
53
+ }, /*#__PURE__*/React.createElement(SingleSelectInput, {
46
54
  values: data,
47
55
  isLoading: isLoading,
48
56
  error: error,
49
57
  selectedValue: selectedValue,
50
58
  onChange: handleChange,
51
59
  ariaLabel: `Select ${propertyKey}`
52
- });
60
+ }));
53
61
  }
54
62
  export const SingleSelectFilterInput = /*#__PURE__*/memo(SingleSelectFilterInputInner);
55
63
  //# sourceMappingURL=SingleSelectFilterInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","whereClause","selectedValue","type","selectedValues","undefined","isExcluding","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n aggregationOptions,\n );\n\n return (\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n ariaLabel={`Select ${propertyKey}`}\n />\n );\n}\n\nexport const SingleSelectFilterInput: typeof SingleSelectFilterInputInner =\n memo(\n SingleSelectFilterInputInner,\n ) as typeof SingleSelectFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAU9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGV,OAAO,CAC3B,MACEO,WAAW,EAAEI,IAAI,KAAK,QAAQ,GAC1BR,cAAc,CAACI,WAAW,CAACK,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACN,WAAW,CACd,CAAC;EACD,MAAMO,WAAW,GAAGP,WAAW,EAAEO,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGhB,WAAW,CAC7BiB,KAAyB,IAAK;IAC7BR,oBAAoB,CAAC;MACnBG,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEI,KAAK,KAAKH,SAAS,GAAG,CAACG,KAAK,CAAC,GAAG,EAAE;MAClDF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,oBAAoB,EAAEM,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGjB,OAAO,CAChC,OAAO;IAAEkB,KAAK,EAAET;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEU,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGnB,sBAAsB,CACvDG,UAAU,EACVC,WAAW,EACXW,kBACF,CAAC;EAED,oBACEpB,KAAA,CAAAyB,aAAA,CAACrB,iBAAiB;IAChBsB,MAAM,EAAEJ,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbX,aAAa,EAAEA,aAAc;IAC7Bc,QAAQ,EAAET,YAAa;IACvBU,SAAS,EAAE,UAAUnB,WAAW;EAAG,CACpC,CAAC;AAEN;AAEA,OAAO,MAAMoB,uBAA4D,gBACvE5B,IAAI,CACFM,4BACF,CAAwC","ignoreList":[]}
1
+ {"version":3,"file":"SingleSelectFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","SingleSelectInput","usePropertyAggregation","coerceToString","SingleSelectFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","selectedValue","type","selectedValues","undefined","isExcluding","handleChange","value","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","values","onChange","ariaLabel","SingleSelectFilterInput"],"sources":["SingleSelectFilterInput.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 { SingleSelectInput } from \"../base/inputs/SingleSelectInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToString } from \"../utils/coerceFilterValue.js\";\n\ninterface SingleSelectFilterInputProps<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}\n\nfunction SingleSelectFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: SingleSelectFilterInputProps<Q>): React.ReactElement {\n const selectedValue = useMemo(\n () =>\n filterState?.type === \"SELECT\"\n ? coerceToString(filterState.selectedValues[0])\n : undefined,\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n onFilterStateChanged({\n type: \"SELECT\",\n selectedValues: value !== undefined ? [value] : [],\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\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 >\n <SingleSelectInput\n values={data}\n isLoading={isLoading}\n error={error}\n selectedValue={selectedValue}\n onChange={handleChange}\n ariaLabel={`Select ${propertyKey}`}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const SingleSelectFilterInput: typeof SingleSelectFilterInputInner =\n memo(\n SingleSelectFilterInputInner,\n ) as typeof SingleSelectFilterInputInner;\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,iBAAiB,QAAQ,qCAAqC;AAEvE,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,cAAc,QAAQ,+BAA+B;AAY9D,SAASC,4BAA4BA,CAAiC;EACpEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC+B,CAAC,EAAsB;EACtD,MAAMC,aAAa,GAAGb,OAAO,CAC3B,MACES,WAAW,EAAEK,IAAI,KAAK,QAAQ,GAC1BV,cAAc,CAACK,WAAW,CAACM,cAAc,CAAC,CAAC,CAAC,CAAC,GAC7CC,SAAS,EACf,CAACP,WAAW,CACd,CAAC;EACD,MAAMQ,WAAW,GAAGR,WAAW,EAAEQ,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGnB,WAAW,CAC7BoB,KAAyB,IAAK;IAC7BT,oBAAoB,CAAC;MACnBI,IAAI,EAAE,QAAQ;MACdC,cAAc,EAAEI,KAAK,KAAKH,SAAS,GAAG,CAACG,KAAK,CAAC,GAAG,EAAE;MAClDF;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACP,oBAAoB,EAAEO,WAAW,CACpC,CAAC;EAED,MAAMG,kBAAkB,GAAGpB,OAAO,CAChC,OAAO;IAAEqB,KAAK,EAAEV;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEW,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGrB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTa,kBACF,CAAC;EAED,oBACEvB,KAAA,CAAA4B,aAAA,CAACxB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CgB,eAAe,EAAEJ,IAAI,CAACK;EAAO,gBAE7B9B,KAAA,CAAA4B,aAAA,CAACvB,iBAAiB;IAChB0B,MAAM,EAAEN,IAAK;IACbC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbX,aAAa,EAAEA,aAAc;IAC7BgB,QAAQ,EAAEX,YAAa;IACvBY,SAAS,EAAE,UAAUtB,WAAW;EAAG,CACpC,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMuB,uBAA4D,gBACvEjC,IAAI,CACFO,4BACF,CAAwC","ignoreList":[]}
@@ -15,15 +15,18 @@
15
15
  */
16
16
 
17
17
  import React, { memo, useCallback, useMemo } from "react";
18
+ import { FilterInputExcludeRow } from "../base/FilterInputExcludeRow.js";
18
19
  import { TextTagsInput } from "../base/inputs/TextTagsInput.js";
19
20
  import { usePropertyAggregation } from "../hooks/usePropertyAggregation.js";
20
21
  import { coerceToStringArray } from "../utils/coerceFilterValue.js";
21
22
  function TextTagsFilterInputInner({
22
23
  objectType,
24
+ objectSet,
23
25
  propertyKey,
24
26
  filterState,
25
27
  onFilterStateChanged,
26
- whereClause
28
+ whereClause,
29
+ excludeRowOpen
27
30
  }) {
28
31
  const tags = useMemo(() => filterState?.type === "EXACT_MATCH" ? coerceToStringArray(filterState.values) : [], [filterState]);
29
32
  const isExcluding = filterState?.isExcluding ?? false;
@@ -41,14 +44,19 @@ function TextTagsFilterInputInner({
41
44
  data,
42
45
  isLoading,
43
46
  error
44
- } = usePropertyAggregation(objectType, propertyKey, aggregationOptions);
45
- return /*#__PURE__*/React.createElement(TextTagsInput, {
47
+ } = usePropertyAggregation(objectType, propertyKey, objectSet, aggregationOptions);
48
+ return /*#__PURE__*/React.createElement(FilterInputExcludeRow, {
49
+ excludeRowOpen: excludeRowOpen,
50
+ filterState: filterState,
51
+ onFilterStateChanged: onFilterStateChanged,
52
+ totalValueCount: data.length
53
+ }, /*#__PURE__*/React.createElement(TextTagsInput, {
46
54
  suggestions: data,
47
55
  isLoading: isLoading,
48
56
  error: error,
49
57
  tags: tags,
50
58
  onChange: handleChange
51
- });
59
+ }));
52
60
  }
53
61
  export const TextTagsFilterInput = /*#__PURE__*/memo(TextTagsFilterInputInner);
54
62
  //# sourceMappingURL=TextTagsFilterInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","propertyKey","filterState","onFilterStateChanged","whereClause","tags","type","values","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n propertyKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (state: FilterState) => void;\n whereClause: WhereClause<Q>;\n}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey as PropertyKeys<Q>,\n aggregationOptions,\n );\n\n return (\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={handleChange}\n />\n );\n}\n\nexport const TextTagsFilterInput: typeof TextTagsFilterInputInner = memo(\n TextTagsFilterInputInner,\n) as typeof TextTagsFilterInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,aAAa,QAAQ,iCAAiC;AAE/D,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAUnE,SAASC,wBAAwBA,CAAiC;EAChEC,UAAU;EACVC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,IAAI,GAAGV,OAAO,CAClB,MACEO,WAAW,EAAEI,IAAI,KAAK,aAAa,GAC/BR,mBAAmB,CAACI,WAAW,CAACK,MAAM,CAAC,GACvC,EAAE,EACR,CAACL,WAAW,CACd,CAAC;EACD,MAAMM,WAAW,GAAGN,WAAW,EAAEM,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGf,WAAW,CAC7Ba,MAAgB,IAAK;IACpBJ,oBAAoB,CAAC;MACnBG,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACL,oBAAoB,EAAEK,WAAW,CACpC,CAAC;EAED,MAAME,kBAAkB,GAAGf,OAAO,CAChC,OAAO;IAAEgB,KAAK,EAAEP;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAEQ,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGjB,sBAAsB,CACvDG,UAAU,EACVC,WAAW,EACXS,kBACF,CAAC;EAED,oBACElB,KAAA,CAAAuB,aAAA,CAACnB,aAAa;IACZoB,WAAW,EAAEJ,IAAK;IAClBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbT,IAAI,EAAEA,IAAK;IACXY,QAAQ,EAAER;EAAa,CACxB,CAAC;AAEN;AAEA,OAAO,MAAMS,mBAAoD,gBAAGzB,IAAI,CACtEM,wBACF,CAAoC","ignoreList":[]}
1
+ {"version":3,"file":"TextTagsFilterInput.js","names":["React","memo","useCallback","useMemo","FilterInputExcludeRow","TextTagsInput","usePropertyAggregation","coerceToStringArray","TextTagsFilterInputInner","objectType","objectSet","propertyKey","filterState","onFilterStateChanged","whereClause","excludeRowOpen","tags","type","values","isExcluding","handleChange","aggregationOptions","where","data","isLoading","error","createElement","totalValueCount","length","suggestions","onChange","TextTagsFilterInput"],"sources":["TextTagsFilterInput.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 { TextTagsInput } from \"../base/inputs/TextTagsInput.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { usePropertyAggregation } from \"../hooks/usePropertyAggregation.js\";\nimport { coerceToStringArray } from \"../utils/coerceFilterValue.js\";\n\ninterface TextTagsFilterInputProps<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}\n\nfunction TextTagsFilterInputInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n propertyKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n excludeRowOpen,\n}: TextTagsFilterInputProps<Q>): React.ReactElement {\n const tags = useMemo(\n () =>\n filterState?.type === \"EXACT_MATCH\"\n ? coerceToStringArray(filterState.values)\n : [],\n [filterState],\n );\n const isExcluding = filterState?.isExcluding ?? false;\n\n const handleChange = useCallback(\n (values: string[]) => {\n onFilterStateChanged({\n type: \"EXACT_MATCH\",\n values,\n isExcluding,\n });\n },\n [onFilterStateChanged, isExcluding],\n );\n\n const aggregationOptions = useMemo(\n () => ({ where: whereClause }),\n [whereClause],\n );\n\n const { data, 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 >\n <TextTagsInput\n suggestions={data}\n isLoading={isLoading}\n error={error}\n tags={tags}\n onChange={handleChange}\n />\n </FilterInputExcludeRow>\n );\n}\n\nexport const TextTagsFilterInput: typeof TextTagsFilterInputInner = memo(\n TextTagsFilterInputInner,\n) as typeof TextTagsFilterInputInner;\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,aAAa,QAAQ,iCAAiC;AAE/D,SAASC,sBAAsB,QAAQ,oCAAoC;AAC3E,SAASC,mBAAmB,QAAQ,+BAA+B;AAYnE,SAASC,wBAAwBA,CAAiC;EAChEC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,IAAI,GAAGb,OAAO,CAClB,MACES,WAAW,EAAEK,IAAI,KAAK,aAAa,GAC/BV,mBAAmB,CAACK,WAAW,CAACM,MAAM,CAAC,GACvC,EAAE,EACR,CAACN,WAAW,CACd,CAAC;EACD,MAAMO,WAAW,GAAGP,WAAW,EAAEO,WAAW,IAAI,KAAK;EAErD,MAAMC,YAAY,GAAGlB,WAAW,CAC7BgB,MAAgB,IAAK;IACpBL,oBAAoB,CAAC;MACnBI,IAAI,EAAE,aAAa;MACnBC,MAAM;MACNC;IACF,CAAC,CAAC;EACJ,CAAC,EACD,CAACN,oBAAoB,EAAEM,WAAW,CACpC,CAAC;EAED,MAAME,kBAAkB,GAAGlB,OAAO,CAChC,OAAO;IAAEmB,KAAK,EAAER;EAAY,CAAC,CAAC,EAC9B,CAACA,WAAW,CACd,CAAC;EAED,MAAM;IAAES,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGnB,sBAAsB,CACvDG,UAAU,EACVE,WAAW,EACXD,SAAS,EACTW,kBACF,CAAC;EAED,oBACErB,KAAA,CAAA0B,aAAA,CAACtB,qBAAqB;IACpBW,cAAc,EAAEA,cAAe;IAC/BH,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3Cc,eAAe,EAAEJ,IAAI,CAACK;EAAO,gBAE7B5B,KAAA,CAAA0B,aAAA,CAACrB,aAAa;IACZwB,WAAW,EAAEN,IAAK;IAClBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbT,IAAI,EAAEA,IAAK;IACXc,QAAQ,EAAEV;EAAa,CACxB,CACoB,CAAC;AAE5B;AAEA,OAAO,MAAMW,mBAAoD,gBAAG9B,IAAI,CACtEO,wBACF,CAAoC","ignoreList":[]}
@@ -14,6 +14,32 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ /** Returns true for filter state types that support in-filter search. */
18
+ export function supportsSearch(state) {
19
+ if (!state) {
20
+ return false;
21
+ }
22
+ switch (state.type) {
23
+ case "SELECT":
24
+ case "EXACT_MATCH":
25
+ return true;
26
+ case "CONTAINS_TEXT":
27
+ case "NUMBER_RANGE":
28
+ case "DATE_RANGE":
29
+ case "TOGGLE":
30
+ case "hasLink":
31
+ case "linkedProperty":
32
+ case "keywordSearch":
33
+ case "TIMELINE":
34
+ case "custom":
35
+ return false;
36
+ default:
37
+ {
38
+ return false;
39
+ }
40
+ }
41
+ }
42
+
17
43
  /** Returns true for filter state types that support isExcluding. */
18
44
  export function supportsExcluding(state) {
19
45
  if (!state) {
@@ -75,7 +101,9 @@ export function filterHasActiveState(state) {
75
101
  case "custom":
76
102
  return true;
77
103
  default:
78
- return false;
104
+ {
105
+ return false;
106
+ }
79
107
  }
80
108
  }
81
109
  //# sourceMappingURL=filterValues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filterValues.js","names":["supportsExcluding","state","type","filterValuesBySearch","values","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","v","includes","filterHasActiveState","selectedValues","length","value","undefined","minValue","maxValue","includeNull","enabled","hasLink","linkedFilterState","searchTerm","startDate","endDate"],"sources":["filterValues.ts"],"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 { FilterState } from \"../FilterListItemApi.js\";\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) return false;\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default:\n return false;\n }\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA,OAAO,SAASA,iBAAiBA,CAACC,KAA8B,EAAW;EACzE,IAAI,CAACA,KAAK,EAAE;IACV,OAAO,KAAK;EACd;EACA,QAAQA,KAAK,CAACC,IAAI;IAChB,KAAK,QAAQ;IACb,KAAK,aAAa;IAClB,KAAK,eAAe;IACpB,KAAK,UAAU;MACb,OAAO,IAAI;IACb,KAAK,cAAc;IACnB,KAAK,YAAY;IACjB,KAAK,QAAQ;IACb,KAAK,SAAS;IACd,KAAK,gBAAgB;IACrB,KAAK,eAAe;IACpB,KAAK,QAAQ;MACX,OAAO,KAAK;IACd;MAAS;QAEP,OAAO,KAAK;MACd;EACF;AACF;;AAEA;AACA,OAAO,SAASC,oBAAoBA,CAClCC,MAAW,EACXC,WAAmB,EACnBC,QAA6B,EACxB;EACL,MAAMC,OAAO,GAAGF,WAAW,CAACG,IAAI,CAAC,CAAC;EAClC,IAAI,CAACD,OAAO,EAAE,OAAOH,MAAM;EAC3B,MAAMK,WAAW,GAAGF,OAAO,CAACG,WAAW,CAAC,CAAC;EACzC,OAAON,MAAM,CAACO,MAAM,CAAEC,CAAC,IAAKN,QAAQ,CAACM,CAAC,CAAC,CAACF,WAAW,CAAC,CAAC,CAACG,QAAQ,CAACJ,WAAW,CAAC,CAAC;AAC9E;;AAEA;AACA,OAAO,SAASK,oBAAoBA,CAACb,KAA8B,EAAW;EAC5E,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;EAExB,QAAQA,KAAK,CAACC,IAAI;IAChB,KAAK,QAAQ;MACX,OAAOD,KAAK,CAACc,cAAc,CAACC,MAAM,GAAG,CAAC;IACxC,KAAK,aAAa;MAChB,OAAOf,KAAK,CAACG,MAAM,CAACY,MAAM,GAAG,CAAC;IAChC,KAAK,eAAe;MAClB,OAAOf,KAAK,CAACgB,KAAK,KAAKC,SAAS,IAAIjB,KAAK,CAACgB,KAAK,KAAK,EAAE;IACxD,KAAK,cAAc;MACjB,OAAOhB,KAAK,CAACkB,QAAQ,KAAKD,SAAS,IAAIjB,KAAK,CAACmB,QAAQ,KAAKF,SAAS,IAC9DjB,KAAK,CAACoB,WAAW,KAAK,IAAI;IACjC,KAAK,YAAY;MACf,OAAOpB,KAAK,CAACkB,QAAQ,KAAKD,SAAS,IAAIjB,KAAK,CAACmB,QAAQ,KAAKF,SAAS,IAC9DjB,KAAK,CAACoB,WAAW,KAAK,IAAI;IACjC,KAAK,QAAQ;MACX,OAAOpB,KAAK,CAACqB,OAAO;IACtB,KAAK,SAAS;MACZ,OAAOrB,KAAK,CAACsB,OAAO;IACtB,KAAK,gBAAgB;MACnB,OAAOT,oBAAoB,CAACb,KAAK,CAACuB,iBAAiB,CAAC;IACtD,KAAK,eAAe;MAClB,OAAOvB,KAAK,CAACwB,UAAU,KAAKP,SAAS,IAAIjB,KAAK,CAACwB,UAAU,KAAK,EAAE;IAClE,KAAK,UAAU;MACb,OAAOxB,KAAK,CAACyB,SAAS,KAAKR,SAAS,IAAIjB,KAAK,CAAC0B,OAAO,KAAKT,SAAS;IACrE,KAAK,QAAQ;MACX,OAAO,IAAI;IACb;MACE,OAAO,KAAK;EAChB;AACF","ignoreList":[]}
1
+ {"version":3,"file":"filterValues.js","names":["supportsSearch","state","type","supportsExcluding","filterValuesBySearch","values","searchValue","getValue","trimmed","trim","lowerSearch","toLowerCase","filter","v","includes","filterHasActiveState","selectedValues","length","value","undefined","minValue","maxValue","includeNull","enabled","hasLink","linkedFilterState","searchTerm","startDate","endDate"],"sources":["filterValues.ts"],"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 { FilterState } from \"../FilterListItemApi.js\";\n\n/** Returns true for filter state types that support in-filter search. */\nexport function supportsSearch(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n return true;\n case \"CONTAINS_TEXT\":\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"TIMELINE\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Returns true for filter state types that support isExcluding. */\nexport function supportsExcluding(state: FilterState | undefined): boolean {\n if (!state) {\n return false;\n }\n switch (state.type) {\n case \"SELECT\":\n case \"EXACT_MATCH\":\n case \"CONTAINS_TEXT\":\n case \"TIMELINE\":\n return true;\n case \"NUMBER_RANGE\":\n case \"DATE_RANGE\":\n case \"TOGGLE\":\n case \"hasLink\":\n case \"linkedProperty\":\n case \"keywordSearch\":\n case \"custom\":\n return false;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n\n/** Case-insensitive substring filter for search functionality. */\nexport function filterValuesBySearch<T>(\n values: T[],\n searchValue: string,\n getValue: (item: T) => string,\n): T[] {\n const trimmed = searchValue.trim();\n if (!trimmed) return values;\n const lowerSearch = trimmed.toLowerCase();\n return values.filter((v) => getValue(v).toLowerCase().includes(lowerSearch));\n}\n\n/** Check if a filter state has an active (non-empty) value. */\nexport function filterHasActiveState(state: FilterState | undefined): boolean {\n if (!state) return false;\n\n switch (state.type) {\n case \"SELECT\":\n return state.selectedValues.length > 0;\n case \"EXACT_MATCH\":\n return state.values.length > 0;\n case \"CONTAINS_TEXT\":\n return state.value !== undefined && state.value !== \"\";\n case \"NUMBER_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"DATE_RANGE\":\n return state.minValue !== undefined || state.maxValue !== undefined\n || state.includeNull === true;\n case \"TOGGLE\":\n return state.enabled;\n case \"hasLink\":\n return state.hasLink;\n case \"linkedProperty\":\n return filterHasActiveState(state.linkedFilterState);\n case \"keywordSearch\":\n return state.searchTerm !== undefined && state.searchTerm !== \"\";\n case \"TIMELINE\":\n return state.startDate !== undefined || state.endDate !== undefined;\n case \"custom\":\n return true;\n default: {\n const _exhaustive: never = state;\n return false;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -39,7 +39,6 @@
39
39
  background-clip: padding-box;
40
40
  border-color: var(--osdk-table-skeleton-color-from);
41
41
  border-radius: calc(var(--osdk-surface-border-radius) * 0.5);
42
- border: 1px solid var(--osdk-table-skeleton-border-color);
43
42
  box-shadow: none;
44
43
  color: transparent;
45
44
  cursor: default;
@@ -143,9 +143,7 @@ export function MultiColumnSortDialog({
143
143
  className: styles.addIcon
144
144
  }), /*#__PURE__*/React.createElement("span", {
145
145
  className: styles.addColumnText
146
- }, "Add Column to Sort"), /*#__PURE__*/React.createElement(CaretDown, {
147
- color: "currentColor"
148
- })), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
146
+ }, "Add Column to Sort"), /*#__PURE__*/React.createElement(CaretDown, null)), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
149
147
  className: styles.menuPositioner,
150
148
  sideOffset: 4
151
149
  }, /*#__PURE__*/React.createElement(Menu.Popup, {
@@ -1 +1 @@
1
- {"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Menu","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchBar","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","menuSearchQuery","setMenuSearchQuery","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","filteredAvailableColumns","query","toLowerCase","trim","name","includes","handleMenuSearchChange","event","target","value","handleMenuOpenChange","open","sortableItems","label","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","handleKeyDown","stopPropagation","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","Root","Trigger","addColumnButton","disabled","length","addIcon","addColumnText","color","Portal","Positioner","menuPositioner","sideOffset","Popup","dropdownMenu","onChange","placeholder","menuSearchContainer","onKeyDown","AvailableColumnMenuItem","key","onAddColumn","menuEmptyState","Item","dropdownItem"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\ninterface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter((col) =>\n col.name.toLowerCase().includes(query)\n );\n }, [availableColumns, menuSearchQuery]);\n\n const handleMenuSearchChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setMenuSearchQuery(event.target.value);\n },\n [],\n );\n\n const handleMenuOpenChange = useCallback((open: boolean) => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? <SortAlphabetical className={styles.sortIcon} />\n : <SortAlphabeticalDesc className={styles.sortIcon} />}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n },\n [],\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <Menu.Root onOpenChange={handleMenuOpenChange}>\n <Menu.Trigger\n className={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n aria-label=\"Add column to sort\"\n >\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown color={\"currentColor\"} />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.menuPositioner} sideOffset={4}>\n <Menu.Popup className={styles.dropdownMenu}>\n <SearchBar\n value={menuSearchQuery}\n onChange={handleMenuSearchChange}\n placeholder=\"Search columns\"\n aria-label=\"Search columns to sort\"\n className={styles.menuSearchContainer}\n onKeyDown={handleKeyDown}\n />\n {filteredAvailableColumns.map((column) => (\n <AvailableColumnMenuItem\n key={column.id}\n column={column}\n onAddColumn={handleAddColumn}\n />\n ))}\n {filteredAvailableColumns.length === 0 && (\n <div className={styles.menuEmptyState}>\n No matching columns\n </div>\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\nfunction AvailableColumnMenuItem(\n { column, onAddColumn }: {\n column: ColumnOption;\n onAddColumn: (column: ColumnOption) => void;\n },\n) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n\n return (\n <Menu.Item\n className={classNames(styles.dropdownItem, styles.truncate)}\n onClick={onClick}\n >\n {column.name}\n </Menu.Item>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MultiColumnSortDialog.js","names":["Button","Menu","Add","CaretDown","Cog","SortAlphabetical","SortAlphabeticalDesc","arrayMove","classNames","React","useCallback","useEffect","useMemo","useState","ActionButton","Dialog","SearchBar","styles","SortableItemsList","MultiColumnSortDialog","isOpen","onClose","onApply","currentSorting","columnOptions","selectedSortColumns","setSelectedSortColumns","menuSearchQuery","setMenuSearchQuery","selectedColumns","sort","column","find","col","id","push","direction","desc","handleAddColumn","prev","handleRemoveSortColumn","filter","item","handleReorderSortColumns","fromIndex","toIndex","items","handleToggleSortDirection","map","handleApply","sortingState","availableColumns","canSort","some","selected","filteredAvailableColumns","query","toLowerCase","trim","name","includes","handleMenuSearchChange","event","target","value","handleMenuOpenChange","open","sortableItems","label","content","createElement","className","sortColumnItem","sortColumnName","truncate","sortDirectionButton","onClick","sortIcon","footer","Fragment","variant","handleKeyDown","stopPropagation","onOpenChange","title","DialogTitle","sortColumnsList","onReorder","onRemove","sortableList","Root","Trigger","addColumnButton","disabled","length","addIcon","addColumnText","Portal","Positioner","menuPositioner","sideOffset","Popup","dropdownMenu","onChange","placeholder","menuSearchContainer","onKeyDown","AvailableColumnMenuItem","key","onAddColumn","menuEmptyState","Item","dropdownItem"],"sources":["MultiColumnSortDialog.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Menu } from \"@base-ui/react/menu\";\nimport {\n Add,\n CaretDown,\n Cog,\n SortAlphabetical,\n SortAlphabeticalDesc,\n} from \"@blueprintjs/icons\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nimport type { SortingState } from \"@tanstack/react-table\";\nimport classNames from \"classnames\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { Dialog } from \"../base-components/dialog/Dialog.js\";\nimport { SearchBar } from \"../base-components/search-bar/SearchBar.js\";\nimport styles from \"./MultiColumnSortDialog.module.css\";\nimport { type SortableItem, SortableItemsList } from \"./SortableItemsList.js\";\nimport type { ColumnOption } from \"./utils/types.js\";\n\nexport interface SortColumnItem extends ColumnOption {\n direction: \"asc\" | \"desc\";\n}\n\ninterface MultiColumnSortDialogProps {\n isOpen: boolean;\n onClose: () => void;\n onApply: (sortColumns: SortingState) => void;\n currentSorting: SortingState;\n columnOptions: ColumnOption[];\n}\n\nexport function MultiColumnSortDialog({\n isOpen,\n onClose,\n onApply,\n currentSorting,\n columnOptions,\n}: MultiColumnSortDialogProps): React.ReactElement {\n const [selectedSortColumns, setSelectedSortColumns] = useState<\n SortColumnItem[]\n >([]);\n const [menuSearchQuery, setMenuSearchQuery] = useState(\"\");\n\n // Initialize selected sort columns from current sorting\n useEffect(() => {\n if (isOpen) {\n const selectedColumns: SortColumnItem[] = [];\n for (const sort of currentSorting) {\n const column = columnOptions.find((col) => col.id === sort.id);\n if (column) {\n selectedColumns.push({\n ...column,\n direction: sort.desc ? \"desc\" : \"asc\",\n });\n }\n }\n setSelectedSortColumns(selectedColumns);\n }\n }, [isOpen, currentSorting, columnOptions]);\n\n const handleAddColumn = useCallback((column: ColumnOption) => {\n setSelectedSortColumns((prev) => [\n ...prev,\n { ...column, direction: \"asc\" },\n ]);\n }, []);\n\n const handleRemoveSortColumn = useCallback((id: string) => {\n setSelectedSortColumns((prev) => prev.filter((item) => item.id !== id));\n }, []);\n\n const handleReorderSortColumns = useCallback(\n (fromIndex: number, toIndex: number) => {\n setSelectedSortColumns((items) => arrayMove(items, fromIndex, toIndex));\n },\n [],\n );\n\n const handleToggleSortDirection = useCallback((id: string) => {\n setSelectedSortColumns((prev) =>\n prev.map((item) =>\n item.id === id\n ? { ...item, direction: item.direction === \"asc\" ? \"desc\" : \"asc\" }\n : item\n )\n );\n }, []);\n\n const handleApply = useCallback(() => {\n const sortingState: SortingState = selectedSortColumns.map((col) => ({\n id: col.id,\n desc: col.direction === \"desc\",\n }));\n onApply(sortingState);\n onClose();\n }, [selectedSortColumns, onApply, onClose]);\n\n const availableColumns = useMemo(\n () =>\n columnOptions.filter(\n (col) =>\n col.canSort\n && !selectedSortColumns.some((selected) => selected.id === col.id),\n ),\n [columnOptions, selectedSortColumns],\n );\n\n const filteredAvailableColumns = useMemo(() => {\n const query = menuSearchQuery.toLowerCase().trim();\n if (!query) {\n return availableColumns;\n }\n return availableColumns.filter((col) =>\n col.name.toLowerCase().includes(query)\n );\n }, [availableColumns, menuSearchQuery]);\n\n const handleMenuSearchChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setMenuSearchQuery(event.target.value);\n },\n [],\n );\n\n const handleMenuOpenChange = useCallback((open: boolean) => {\n if (open) {\n setMenuSearchQuery(\"\");\n }\n }, []);\n\n const sortableItems: SortableItem[] = useMemo(() => {\n return selectedSortColumns.map((item) => ({\n id: item.id,\n label: item.name,\n content: (\n <div className={styles.sortColumnItem}>\n <span className={classNames(styles.sortColumnName, styles.truncate)}>\n {item.name}\n </span>\n <Button\n className={styles.sortDirectionButton}\n onClick={() => handleToggleSortDirection(item.id)}\n aria-label={`Toggle sort direction for ${item.name}`}\n >\n {item.direction === \"asc\"\n ? (\n <SortAlphabetical\n className={styles.sortIcon}\n />\n )\n : (\n <SortAlphabeticalDesc\n className={styles.sortIcon}\n />\n )}\n </Button>\n </div>\n ),\n }));\n }, [selectedSortColumns, handleToggleSortDirection]);\n\n const footer = useMemo(() => (\n <>\n <ActionButton onClick={onClose}>Cancel</ActionButton>\n <ActionButton variant=\"primary\" onClick={handleApply}>\n Apply\n </ActionButton>\n </>\n ), [handleApply, onClose]);\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLInputElement>) => {\n event.stopPropagation();\n },\n [],\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={onClose}\n title={DialogTitle}\n footer={footer}\n >\n <div className={styles.sortColumnsList}>\n <SortableItemsList\n items={sortableItems}\n onReorder={handleReorderSortColumns}\n onRemove={handleRemoveSortColumn}\n className={styles.sortableList}\n />\n <Menu.Root onOpenChange={handleMenuOpenChange}>\n <Menu.Trigger\n className={styles.addColumnButton}\n disabled={availableColumns.length === 0}\n aria-label=\"Add column to sort\"\n >\n <Add className={styles.addIcon} />\n <span className={styles.addColumnText}>\n Add Column to Sort\n </span>\n <CaretDown />\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.menuPositioner} sideOffset={4}>\n <Menu.Popup className={styles.dropdownMenu}>\n <SearchBar\n value={menuSearchQuery}\n onChange={handleMenuSearchChange}\n placeholder=\"Search columns\"\n aria-label=\"Search columns to sort\"\n className={styles.menuSearchContainer}\n onKeyDown={handleKeyDown}\n />\n {filteredAvailableColumns.map((column) => (\n <AvailableColumnMenuItem\n key={column.id}\n column={column}\n onAddColumn={handleAddColumn}\n />\n ))}\n {filteredAvailableColumns.length === 0 && (\n <div className={styles.menuEmptyState}>\n No matching columns\n </div>\n )}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n </div>\n </Dialog>\n );\n}\n\nconst DialogTitle = (\n <div className={styles.title}>\n <Cog />Sort on Multiple Columns\n </div>\n);\nfunction AvailableColumnMenuItem(\n { column, onAddColumn }: {\n column: ColumnOption;\n onAddColumn: (column: ColumnOption) => void;\n },\n) {\n const onClick = useCallback(() => onAddColumn(column), [onAddColumn, column]);\n\n return (\n <Menu.Item\n className={classNames(styles.dropdownItem, styles.truncate)}\n onClick={onClick}\n >\n {column.name}\n </Menu.Item>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -111,7 +111,6 @@
111
111
  .addIcon {
112
112
  width: var(--osdk-iconography-size-small);
113
113
  height: var(--osdk-iconography-size-small);
114
- color: currentColor;
115
114
  }
116
115
 
117
116
  .addColumnText {
@@ -31,7 +31,7 @@
31
31
  }
32
32
 
33
33
  &:last-child {
34
- border-right: var(--osdk-table-border);
34
+ border-right: none;
35
35
  }
36
36
  }
37
37
 
@@ -34,6 +34,7 @@
34
34
  display: flex;
35
35
  width: max-content;
36
36
  min-width: 100%;
37
+ border-top: var(--osdk-table-border);
37
38
  border-bottom: var(--osdk-table-border);
38
39
  }
39
40
 
@@ -46,7 +47,6 @@
46
47
  font-weight: var(--osdk-table-header-fontWeight);
47
48
  font-size: var(--osdk-table-header-fontSize);
48
49
  color: var(--osdk-table-header-color);
49
- border-top: var(--osdk-table-border);
50
50
  border-right: var(--osdk-table-header-divider);
51
51
  background-color: inherit;
52
52
 
@@ -55,7 +55,7 @@
55
55
  }
56
56
 
57
57
  &:last-child {
58
- border-right: var(--osdk-table-border);
58
+ border-right: none;
59
59
  }
60
60
  }
61
61