@osdk/react-components 0.2.0-beta.19 → 0.2.0-beta.20

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 (316) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/build/browser/action-form/ActionForm.js +5 -1
  3. package/build/browser/action-form/ActionForm.js.map +1 -1
  4. package/build/browser/action-form/BaseForm.js +4 -8
  5. package/build/browser/action-form/BaseForm.js.map +1 -1
  6. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  7. package/build/browser/action-form/fields/DropdownField.js +104 -0
  8. package/build/browser/action-form/fields/DropdownField.js.map +1 -0
  9. package/build/browser/action-form/fields/FormFieldRenderer.js +23 -12
  10. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  11. package/build/browser/action-form/fields/TextInputField.js +8 -9
  12. package/build/browser/action-form/fields/TextInputField.js.map +1 -1
  13. package/build/browser/base-components/combobox/Combobox.js +25 -3
  14. package/build/browser/base-components/combobox/Combobox.js.map +1 -1
  15. package/build/browser/base-components/combobox/Combobox.module.css +226 -46
  16. package/build/browser/base-components/combobox/Combobox.module.css.js +1 -0
  17. package/build/browser/base-components/select/Select.js +7 -1
  18. package/build/browser/base-components/select/Select.js.map +1 -1
  19. package/build/browser/base-components/select/Select.module.css +132 -35
  20. package/build/browser/base-components/select/Select.module.css.js +2 -0
  21. package/build/browser/base-components/skeleton/SkeletonBar.js +36 -0
  22. package/build/browser/base-components/skeleton/SkeletonBar.js.map +1 -0
  23. package/build/browser/base-components/skeleton/SkeletonBar.module.css +39 -0
  24. package/build/browser/base-components/skeleton/SkeletonBar.module.css.js +7 -0
  25. package/build/browser/filter-list/FilterList.js +42 -5
  26. package/build/browser/filter-list/FilterList.js.map +1 -1
  27. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  28. package/build/browser/filter-list/base/AddFilterPopover.js +45 -0
  29. package/build/browser/filter-list/base/AddFilterPopover.js.map +1 -0
  30. package/build/browser/filter-list/base/AddFilterPopover.module.css +83 -0
  31. package/build/browser/filter-list/base/AddFilterPopover.module.css.js +9 -0
  32. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +16 -27
  33. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  34. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +15 -5
  35. package/build/browser/filter-list/base/inputs/CheckboxListSkeleton.js +46 -0
  36. package/build/browser/filter-list/base/inputs/CheckboxListSkeleton.js.map +1 -0
  37. package/build/browser/filter-list/base/inputs/CheckboxListSkeleton.module.css +32 -0
  38. package/build/browser/filter-list/base/inputs/CheckboxListSkeleton.module.css.js +8 -0
  39. package/build/browser/filter-list/base/inputs/ListogramInput.js +21 -12
  40. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  41. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +13 -1
  42. package/build/browser/filter-list/base/inputs/ListogramSkeleton.js +45 -0
  43. package/build/browser/filter-list/base/inputs/ListogramSkeleton.js.map +1 -0
  44. package/build/browser/filter-list/base/inputs/ListogramSkeleton.module.css +32 -0
  45. package/build/browser/filter-list/base/inputs/ListogramSkeleton.module.css.js +8 -0
  46. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +1 -1
  47. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  48. package/build/browser/filter-list/base/inputs/RangeInput.js +13 -13
  49. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  50. package/build/browser/filter-list/base/inputs/RangeInput.module.css +23 -0
  51. package/build/browser/filter-list/base/inputs/TextTagsInput.js +1 -1
  52. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  53. package/build/browser/filter-list/base/inputs/useStaleData.js +29 -0
  54. package/build/browser/filter-list/base/inputs/useStaleData.js.map +1 -0
  55. package/build/browser/filter-list/hooks/useFilterVisibility.js +68 -0
  56. package/build/browser/filter-list/hooks/useFilterVisibility.js.map +1 -0
  57. package/build/browser/object-table/DefaultCellRenderer.js +13 -3
  58. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  59. package/build/browser/object-table/EditableCell.js +7 -6
  60. package/build/browser/object-table/EditableCell.js.map +1 -1
  61. package/build/browser/object-table/LoadingCell.js +6 -3
  62. package/build/browser/object-table/LoadingCell.js.map +1 -1
  63. package/build/browser/object-table/LoadingRow.js +2 -1
  64. package/build/browser/object-table/LoadingRow.js.map +1 -1
  65. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  66. package/build/browser/object-table/Table.js.map +1 -1
  67. package/build/browser/object-table/TableCell.module.css +1 -0
  68. package/build/browser/object-table/components/AsyncValueCell.js +35 -0
  69. package/build/browser/object-table/components/AsyncValueCell.js.map +1 -0
  70. package/build/browser/object-table/hooks/useColumnDefs.js +3 -1
  71. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  72. package/build/browser/object-table/hooks/useFunctionColumnsData.js +270 -0
  73. package/build/browser/object-table/hooks/useFunctionColumnsData.js.map +1 -0
  74. package/build/browser/object-table/hooks/useObjectTableData.js +34 -13
  75. package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
  76. package/build/browser/object-table/utils/AsyncCellData.js +30 -0
  77. package/build/browser/object-table/utils/AsyncCellData.js.map +1 -0
  78. package/build/browser/object-table/utils/constants.js +1 -0
  79. package/build/browser/object-table/utils/constants.js.map +1 -1
  80. package/build/browser/pdf-viewer/PdfRenderer.js +88 -0
  81. package/build/browser/pdf-viewer/PdfRenderer.js.map +1 -0
  82. package/build/browser/pdf-viewer/PdfViewer.js +197 -0
  83. package/build/browser/pdf-viewer/PdfViewer.js.map +1 -0
  84. package/build/browser/pdf-viewer/PdfViewer.module.css +95 -0
  85. package/build/browser/pdf-viewer/PdfViewer.module.css.js +16 -0
  86. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.js +74 -0
  87. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.js.map +1 -0
  88. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.module.css +65 -0
  89. package/build/browser/pdf-viewer/PdfViewerAnnotationLayer.module.css.js +11 -0
  90. package/build/browser/pdf-viewer/PdfViewerSearchBar.js +84 -0
  91. package/build/browser/pdf-viewer/PdfViewerSearchBar.js.map +1 -0
  92. package/build/browser/pdf-viewer/PdfViewerSearchBar.module.css +65 -0
  93. package/build/browser/pdf-viewer/PdfViewerSearchBar.module.css.js +10 -0
  94. package/build/browser/pdf-viewer/PdfViewerSidebar.js +74 -0
  95. package/build/browser/pdf-viewer/PdfViewerSidebar.js.map +1 -0
  96. package/build/browser/pdf-viewer/PdfViewerSidebar.module.css +46 -0
  97. package/build/browser/pdf-viewer/PdfViewerSidebar.module.css.js +11 -0
  98. package/build/browser/pdf-viewer/PdfViewerThumbnail.js +100 -0
  99. package/build/browser/pdf-viewer/PdfViewerThumbnail.js.map +1 -0
  100. package/build/browser/pdf-viewer/PdfViewerThumbnail.module.css +26 -0
  101. package/build/browser/pdf-viewer/PdfViewerThumbnail.module.css.js +8 -0
  102. package/build/browser/pdf-viewer/PdfViewerToolbar.js +167 -0
  103. package/build/browser/pdf-viewer/PdfViewerToolbar.js.map +1 -0
  104. package/build/browser/pdf-viewer/PdfViewerToolbar.module.css +86 -0
  105. package/build/browser/pdf-viewer/PdfViewerToolbar.module.css.js +12 -0
  106. package/build/browser/pdf-viewer/constants.js +43 -0
  107. package/build/browser/pdf-viewer/constants.js.map +1 -0
  108. package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js +54 -0
  109. package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -0
  110. package/build/browser/pdf-viewer/hooks/usePdfDocument.js +67 -0
  111. package/build/browser/pdf-viewer/hooks/usePdfDocument.js.map +1 -0
  112. package/build/browser/pdf-viewer/hooks/usePdfViewer.js +69 -0
  113. package/build/browser/pdf-viewer/hooks/usePdfViewer.js.map +1 -0
  114. package/build/browser/pdf-viewer/hooks/usePdfViewerSearch.js +106 -0
  115. package/build/browser/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -0
  116. package/build/browser/pdf-viewer/hooks/usePdfViewerSync.js +71 -0
  117. package/build/browser/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -0
  118. package/build/browser/pdf-viewer/types.js +2 -0
  119. package/build/browser/pdf-viewer/types.js.map +1 -0
  120. package/build/browser/public/experimental.js +4 -0
  121. package/build/browser/public/experimental.js.map +1 -1
  122. package/build/browser/styles.css +1008 -87
  123. package/build/cjs/public/experimental.cjs +2311 -895
  124. package/build/cjs/public/experimental.cjs.map +1 -1
  125. package/build/cjs/public/experimental.css +678 -153
  126. package/build/cjs/public/experimental.css.map +1 -1
  127. package/build/cjs/public/experimental.d.cts +114 -13
  128. package/build/esm/action-form/ActionForm.js +5 -1
  129. package/build/esm/action-form/ActionForm.js.map +1 -1
  130. package/build/esm/action-form/BaseForm.js +4 -8
  131. package/build/esm/action-form/BaseForm.js.map +1 -1
  132. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  133. package/build/esm/action-form/fields/DropdownField.js +104 -0
  134. package/build/esm/action-form/fields/DropdownField.js.map +1 -0
  135. package/build/esm/action-form/fields/FormFieldRenderer.js +23 -12
  136. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  137. package/build/esm/action-form/fields/TextInputField.js +8 -9
  138. package/build/esm/action-form/fields/TextInputField.js.map +1 -1
  139. package/build/esm/base-components/combobox/Combobox.js +25 -3
  140. package/build/esm/base-components/combobox/Combobox.js.map +1 -1
  141. package/build/esm/base-components/combobox/Combobox.module.css +226 -46
  142. package/build/esm/base-components/select/Select.js +7 -1
  143. package/build/esm/base-components/select/Select.js.map +1 -1
  144. package/build/esm/base-components/select/Select.module.css +132 -35
  145. package/build/esm/base-components/skeleton/SkeletonBar.js +36 -0
  146. package/build/esm/base-components/skeleton/SkeletonBar.js.map +1 -0
  147. package/build/esm/base-components/skeleton/SkeletonBar.module.css +39 -0
  148. package/build/esm/filter-list/FilterList.js +42 -5
  149. package/build/esm/filter-list/FilterList.js.map +1 -1
  150. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  151. package/build/esm/filter-list/base/AddFilterPopover.js +45 -0
  152. package/build/esm/filter-list/base/AddFilterPopover.js.map +1 -0
  153. package/build/esm/filter-list/base/AddFilterPopover.module.css +83 -0
  154. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +16 -27
  155. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  156. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +15 -5
  157. package/build/esm/filter-list/base/inputs/CheckboxListSkeleton.js +46 -0
  158. package/build/esm/filter-list/base/inputs/CheckboxListSkeleton.js.map +1 -0
  159. package/build/esm/filter-list/base/inputs/CheckboxListSkeleton.module.css +32 -0
  160. package/build/esm/filter-list/base/inputs/ListogramInput.js +21 -12
  161. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  162. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +13 -1
  163. package/build/esm/filter-list/base/inputs/ListogramSkeleton.js +45 -0
  164. package/build/esm/filter-list/base/inputs/ListogramSkeleton.js.map +1 -0
  165. package/build/esm/filter-list/base/inputs/ListogramSkeleton.module.css +32 -0
  166. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +1 -1
  167. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  168. package/build/esm/filter-list/base/inputs/RangeInput.js +13 -13
  169. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  170. package/build/esm/filter-list/base/inputs/RangeInput.module.css +23 -0
  171. package/build/esm/filter-list/base/inputs/TextTagsInput.js +1 -1
  172. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  173. package/build/esm/filter-list/base/inputs/useStaleData.js +29 -0
  174. package/build/esm/filter-list/base/inputs/useStaleData.js.map +1 -0
  175. package/build/esm/filter-list/hooks/useFilterVisibility.js +68 -0
  176. package/build/esm/filter-list/hooks/useFilterVisibility.js.map +1 -0
  177. package/build/esm/object-table/DefaultCellRenderer.js +13 -3
  178. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  179. package/build/esm/object-table/EditableCell.js +7 -6
  180. package/build/esm/object-table/EditableCell.js.map +1 -1
  181. package/build/esm/object-table/LoadingCell.js +6 -3
  182. package/build/esm/object-table/LoadingCell.js.map +1 -1
  183. package/build/esm/object-table/LoadingRow.js +2 -1
  184. package/build/esm/object-table/LoadingRow.js.map +1 -1
  185. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  186. package/build/esm/object-table/Table.js.map +1 -1
  187. package/build/esm/object-table/TableCell.module.css +1 -0
  188. package/build/esm/object-table/components/AsyncValueCell.js +35 -0
  189. package/build/esm/object-table/components/AsyncValueCell.js.map +1 -0
  190. package/build/esm/object-table/hooks/useColumnDefs.js +3 -1
  191. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  192. package/build/esm/object-table/hooks/useFunctionColumnsData.js +270 -0
  193. package/build/esm/object-table/hooks/useFunctionColumnsData.js.map +1 -0
  194. package/build/esm/object-table/hooks/useObjectTableData.js +34 -13
  195. package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
  196. package/build/esm/object-table/utils/AsyncCellData.js +30 -0
  197. package/build/esm/object-table/utils/AsyncCellData.js.map +1 -0
  198. package/build/esm/object-table/utils/constants.js +1 -0
  199. package/build/esm/object-table/utils/constants.js.map +1 -1
  200. package/build/esm/pdf-viewer/PdfRenderer.js +88 -0
  201. package/build/esm/pdf-viewer/PdfRenderer.js.map +1 -0
  202. package/build/esm/pdf-viewer/PdfViewer.js +197 -0
  203. package/build/esm/pdf-viewer/PdfViewer.js.map +1 -0
  204. package/build/esm/pdf-viewer/PdfViewer.module.css +95 -0
  205. package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.js +74 -0
  206. package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.js.map +1 -0
  207. package/build/esm/pdf-viewer/PdfViewerAnnotationLayer.module.css +65 -0
  208. package/build/esm/pdf-viewer/PdfViewerSearchBar.js +84 -0
  209. package/build/esm/pdf-viewer/PdfViewerSearchBar.js.map +1 -0
  210. package/build/esm/pdf-viewer/PdfViewerSearchBar.module.css +65 -0
  211. package/build/esm/pdf-viewer/PdfViewerSidebar.js +74 -0
  212. package/build/esm/pdf-viewer/PdfViewerSidebar.js.map +1 -0
  213. package/build/esm/pdf-viewer/PdfViewerSidebar.module.css +46 -0
  214. package/build/esm/pdf-viewer/PdfViewerThumbnail.js +100 -0
  215. package/build/esm/pdf-viewer/PdfViewerThumbnail.js.map +1 -0
  216. package/build/esm/pdf-viewer/PdfViewerThumbnail.module.css +26 -0
  217. package/build/esm/pdf-viewer/PdfViewerToolbar.js +167 -0
  218. package/build/esm/pdf-viewer/PdfViewerToolbar.js.map +1 -0
  219. package/build/esm/pdf-viewer/PdfViewerToolbar.module.css +86 -0
  220. package/build/esm/pdf-viewer/constants.js +43 -0
  221. package/build/esm/pdf-viewer/constants.js.map +1 -0
  222. package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js +54 -0
  223. package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -0
  224. package/build/esm/pdf-viewer/hooks/usePdfDocument.js +67 -0
  225. package/build/esm/pdf-viewer/hooks/usePdfDocument.js.map +1 -0
  226. package/build/esm/pdf-viewer/hooks/usePdfViewer.js +69 -0
  227. package/build/esm/pdf-viewer/hooks/usePdfViewer.js.map +1 -0
  228. package/build/esm/pdf-viewer/hooks/usePdfViewerSearch.js +106 -0
  229. package/build/esm/pdf-viewer/hooks/usePdfViewerSearch.js.map +1 -0
  230. package/build/esm/pdf-viewer/hooks/usePdfViewerSync.js +71 -0
  231. package/build/esm/pdf-viewer/hooks/usePdfViewerSync.js.map +1 -0
  232. package/build/esm/pdf-viewer/types.js +2 -0
  233. package/build/esm/pdf-viewer/types.js.map +1 -0
  234. package/build/esm/public/experimental.js +4 -0
  235. package/build/esm/public/experimental.js.map +1 -1
  236. package/build/types/action-form/FormFieldApi.d.ts +48 -37
  237. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  238. package/build/types/action-form/fields/DropdownField.d.ts +6 -0
  239. package/build/types/action-form/fields/DropdownField.d.ts.map +1 -0
  240. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  241. package/build/types/action-form/fields/TextInputField.d.ts +3 -1
  242. package/build/types/action-form/fields/TextInputField.d.ts.map +1 -1
  243. package/build/types/base-components/combobox/Combobox.d.ts +9 -1
  244. package/build/types/base-components/combobox/Combobox.d.ts.map +1 -1
  245. package/build/types/base-components/select/Select.d.ts +8 -2
  246. package/build/types/base-components/select/Select.d.ts.map +1 -1
  247. package/build/types/base-components/skeleton/SkeletonBar.d.ts +9 -0
  248. package/build/types/base-components/skeleton/SkeletonBar.d.ts.map +1 -0
  249. package/build/types/filter-list/FilterList.d.ts.map +1 -1
  250. package/build/types/filter-list/FilterListApi.d.ts +24 -6
  251. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  252. package/build/types/filter-list/base/AddFilterPopover.d.ts +12 -0
  253. package/build/types/filter-list/base/AddFilterPopover.d.ts.map +1 -0
  254. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +2 -1
  255. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -1
  256. package/build/types/filter-list/base/inputs/CheckboxListSkeleton.d.ts +2 -0
  257. package/build/types/filter-list/base/inputs/CheckboxListSkeleton.d.ts.map +1 -0
  258. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +2 -1
  259. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  260. package/build/types/filter-list/base/inputs/ListogramSkeleton.d.ts +2 -0
  261. package/build/types/filter-list/base/inputs/ListogramSkeleton.d.ts.map +1 -0
  262. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
  263. package/build/types/filter-list/base/inputs/useStaleData.d.ts +1 -0
  264. package/build/types/filter-list/base/inputs/useStaleData.d.ts.map +1 -0
  265. package/build/types/filter-list/hooks/useFilterVisibility.d.ts +8 -0
  266. package/build/types/filter-list/hooks/useFilterVisibility.d.ts.map +1 -0
  267. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
  268. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  269. package/build/types/object-table/LoadingCell.d.ts +1 -0
  270. package/build/types/object-table/LoadingCell.d.ts.map +1 -1
  271. package/build/types/object-table/LoadingRow.d.ts.map +1 -1
  272. package/build/types/object-table/ObjectTableApi.d.ts +51 -15
  273. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  274. package/build/types/object-table/Table.d.ts +1 -0
  275. package/build/types/object-table/Table.d.ts.map +1 -1
  276. package/build/types/object-table/components/AsyncValueCell.d.ts +5 -0
  277. package/build/types/object-table/components/AsyncValueCell.d.ts.map +1 -0
  278. package/build/types/object-table/hooks/useFunctionColumnsData.d.ts +13 -0
  279. package/build/types/object-table/hooks/useFunctionColumnsData.d.ts.map +1 -0
  280. package/build/types/object-table/hooks/useObjectTableData.d.ts +8 -1
  281. package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
  282. package/build/types/object-table/utils/AsyncCellData.d.ts +8 -0
  283. package/build/types/object-table/utils/AsyncCellData.d.ts.map +1 -0
  284. package/build/types/object-table/utils/constants.d.ts +1 -0
  285. package/build/types/object-table/utils/constants.d.ts.map +1 -1
  286. package/build/types/pdf-viewer/PdfRenderer.d.ts +8 -0
  287. package/build/types/pdf-viewer/PdfRenderer.d.ts.map +1 -0
  288. package/build/types/pdf-viewer/PdfViewer.d.ts +4 -0
  289. package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -0
  290. package/build/types/pdf-viewer/PdfViewerAnnotationLayer.d.ts +10 -0
  291. package/build/types/pdf-viewer/PdfViewerAnnotationLayer.d.ts.map +1 -0
  292. package/build/types/pdf-viewer/PdfViewerSearchBar.d.ts +12 -0
  293. package/build/types/pdf-viewer/PdfViewerSearchBar.d.ts.map +1 -0
  294. package/build/types/pdf-viewer/PdfViewerSidebar.d.ts +10 -0
  295. package/build/types/pdf-viewer/PdfViewerSidebar.d.ts.map +1 -0
  296. package/build/types/pdf-viewer/PdfViewerThumbnail.d.ts +10 -0
  297. package/build/types/pdf-viewer/PdfViewerThumbnail.d.ts.map +1 -0
  298. package/build/types/pdf-viewer/PdfViewerToolbar.d.ts +14 -0
  299. package/build/types/pdf-viewer/PdfViewerToolbar.d.ts.map +1 -0
  300. package/build/types/pdf-viewer/constants.d.ts +17 -0
  301. package/build/types/pdf-viewer/constants.d.ts.map +1 -0
  302. package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts +10 -0
  303. package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts.map +1 -0
  304. package/build/types/pdf-viewer/hooks/usePdfDocument.d.ts +9 -0
  305. package/build/types/pdf-viewer/hooks/usePdfDocument.d.ts.map +1 -0
  306. package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts +9 -0
  307. package/build/types/pdf-viewer/hooks/usePdfViewer.d.ts.map +1 -0
  308. package/build/types/pdf-viewer/hooks/usePdfViewerSearch.d.ts +15 -0
  309. package/build/types/pdf-viewer/hooks/usePdfViewerSearch.d.ts.map +1 -0
  310. package/build/types/pdf-viewer/hooks/usePdfViewerSync.d.ts +15 -0
  311. package/build/types/pdf-viewer/hooks/usePdfViewerSync.d.ts.map +1 -0
  312. package/build/types/pdf-viewer/types.d.ts +44 -0
  313. package/build/types/pdf-viewer/types.d.ts.map +1 -0
  314. package/build/types/public/experimental.d.ts +4 -1
  315. package/build/types/public/experimental.d.ts.map +1 -1
  316. package/package.json +5 -4
@@ -25,31 +25,68 @@
25
25
  calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2.5);
26
26
  box-sizing: border-box;
27
27
  cursor: pointer;
28
- border-radius: var(--osdk-select-border-radius, var(--osdk-surface-border-radius));
29
- border: var(--osdk-select-border-width, var(--osdk-surface-border-width)) solid
28
+ border-radius: var(
29
+ --osdk-select-border-radius,
30
+ var(--osdk-surface-border-radius)
31
+ );
32
+ border: var(--osdk-select-border-width, var(--osdk-surface-border-width))
33
+ solid
30
34
  var(--osdk-select-border-color, var(--osdk-surface-border-color-default));
31
- background-color: var(--osdk-select-trigger-bg, var(--osdk-surface-background-color-default-rest));
32
- color: var(--osdk-select-trigger-color, var(--osdk-typography-color-default-rest));
33
- font-family: var(--osdk-select-font-family, var(--osdk-typography-family-default));
34
- font-size: var(--osdk-select-font-size, var(--osdk-typography-size-body-medium));
35
- line-height: var(--osdk-select-line-height, var(--osdk-typography-line-height-default));
36
- transition: background-color var(--osdk-select-transition-duration, var(--osdk-emphasis-transition-duration))
35
+ background-color: var(
36
+ --osdk-select-trigger-bg,
37
+ var(--osdk-surface-background-color-default-rest)
38
+ );
39
+ color: var(
40
+ --osdk-select-trigger-color,
41
+ var(--osdk-typography-color-default-rest)
42
+ );
43
+ font-family: var(
44
+ --osdk-select-font-family,
45
+ var(--osdk-typography-family-default)
46
+ );
47
+ font-size: var(
48
+ --osdk-select-font-size,
49
+ var(--osdk-typography-size-body-medium)
50
+ );
51
+ line-height: var(
52
+ --osdk-select-line-height,
53
+ var(--osdk-typography-line-height-default)
54
+ );
55
+ transition:
56
+ background-color
57
+ var(
58
+ --osdk-select-transition-duration,
59
+ var(--osdk-emphasis-transition-duration)
60
+ )
37
61
  var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default)),
38
- border-color var(--osdk-select-transition-duration, var(--osdk-emphasis-transition-duration))
62
+ border-color
63
+ var(
64
+ --osdk-select-transition-duration,
65
+ var(--osdk-emphasis-transition-duration)
66
+ )
39
67
  var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));
40
68
 
41
69
  &:hover {
42
- background-color: var(--osdk-select-trigger-bg-hover, var(--osdk-surface-background-color-default-hover));
70
+ background-color: var(
71
+ --osdk-select-trigger-bg-hover,
72
+ var(--osdk-surface-background-color-default-hover)
73
+ );
43
74
  }
44
75
 
45
76
  &:active {
46
- background-color: var(--osdk-select-trigger-bg-active, var(--osdk-surface-background-color-default-active));
77
+ background-color: var(
78
+ --osdk-select-trigger-bg-active,
79
+ var(--osdk-surface-background-color-default-active)
80
+ );
47
81
  }
48
82
 
49
83
  &:focus-visible {
50
- outline: var(--osdk-select-focus-width, var(--osdk-emphasis-focus-width)) solid
51
- var(--osdk-select-focus-color, var(--osdk-emphasis-focus-color));
52
- outline-offset: var(--osdk-select-focus-offset, var(--osdk-emphasis-focus-offset));
84
+ outline: var(--osdk-select-focus-width, var(--osdk-emphasis-focus-width))
85
+ solid var(--osdk-select-focus-color, var(--osdk-emphasis-focus-color));
86
+ outline-offset: var(
87
+ --osdk-select-focus-offset,
88
+ var(--osdk-emphasis-focus-offset)
89
+ );
53
90
  }
54
91
 
55
92
  &[data-disabled] {
@@ -58,20 +95,41 @@
58
95
  }
59
96
 
60
97
  &[data-popup-open] {
61
- border-color: var(--osdk-select-border-color-active, var(--osdk-intent-primary-rest));
98
+ border-color: var(
99
+ --osdk-select-border-color-active,
100
+ var(--osdk-intent-primary-rest)
101
+ );
62
102
  }
63
103
  }
64
104
 
65
- .osdkSelectValue {
105
+ .osdkSelectValueContainer {
66
106
  flex: 1;
107
+ display: grid;
108
+ min-width: 0;
109
+
110
+ & > * {
111
+ grid-area: 1 / 1;
112
+ overflow: hidden;
113
+ text-overflow: ellipsis;
114
+ white-space: nowrap;
115
+ }
116
+ }
117
+
118
+ .osdkSelectValue {
67
119
  text-align: left;
68
- overflow: hidden;
69
- text-overflow: ellipsis;
70
- white-space: nowrap;
120
+ }
71
121
 
72
- &[data-placeholder] {
73
- color: var(--osdk-select-placeholder-color, var(--osdk-typography-color-muted));
74
- }
122
+ .osdkSelectPlaceholder {
123
+ text-align: left;
124
+ color: var(
125
+ --osdk-select-placeholder-color,
126
+ var(--osdk-typography-color-muted)
127
+ );
128
+ pointer-events: none;
129
+ }
130
+
131
+ .osdkSelectValue:not([data-placeholder]) ~ .osdkSelectPlaceholder {
132
+ display: none;
75
133
  }
76
134
 
77
135
  .osdkSelectIcon {
@@ -80,7 +138,11 @@
80
138
  justify-content: center;
81
139
  color: var(--osdk-select-icon-color, var(--osdk-iconography-color-muted));
82
140
  flex-shrink: 0;
83
- transition: transform var(--osdk-select-transition-duration, var(--osdk-emphasis-transition-duration))
141
+ transition: transform
142
+ var(
143
+ --osdk-select-transition-duration,
144
+ var(--osdk-emphasis-transition-duration)
145
+ )
84
146
  var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));
85
147
 
86
148
  [data-popup-open] > & {
@@ -100,10 +162,17 @@
100
162
  overflow-y: auto;
101
163
  padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5);
102
164
  box-sizing: border-box;
103
- border-radius: var(--osdk-select-border-radius, var(--osdk-surface-border-radius));
104
- border: var(--osdk-select-border-width, var(--osdk-surface-border-width)) solid
165
+ border-radius: var(
166
+ --osdk-select-border-radius,
167
+ var(--osdk-surface-border-radius)
168
+ );
169
+ border: var(--osdk-select-border-width, var(--osdk-surface-border-width))
170
+ solid
105
171
  var(--osdk-select-border-color, var(--osdk-surface-border-color-default));
106
- background-color: var(--osdk-select-popup-bg, var(--osdk-surface-background-color-default-rest));
172
+ background-color: var(
173
+ --osdk-select-popup-bg,
174
+ var(--osdk-surface-background-color-default-rest)
175
+ );
107
176
  box-shadow: var(--osdk-select-popup-shadow, var(--osdk-surface-shadow-2));
108
177
  }
109
178
 
@@ -112,23 +181,51 @@
112
181
  align-items: center;
113
182
  padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)
114
183
  calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2);
115
- border-radius: var(--osdk-select-border-radius, var(--osdk-surface-border-radius));
184
+ border-radius: var(
185
+ --osdk-select-border-radius,
186
+ var(--osdk-surface-border-radius)
187
+ );
116
188
  cursor: pointer;
117
- font-family: var(--osdk-select-font-family, var(--osdk-typography-family-default));
118
- font-size: var(--osdk-select-font-size, var(--osdk-typography-size-body-medium));
119
- line-height: var(--osdk-select-line-height, var(--osdk-typography-line-height-default));
120
- color: var(--osdk-select-item-color, var(--osdk-typography-color-default-rest));
121
- transition: background-color var(--osdk-select-transition-duration, var(--osdk-emphasis-transition-duration))
189
+ font-family: var(
190
+ --osdk-select-font-family,
191
+ var(--osdk-typography-family-default)
192
+ );
193
+ font-size: var(
194
+ --osdk-select-font-size,
195
+ var(--osdk-typography-size-body-medium)
196
+ );
197
+ line-height: var(
198
+ --osdk-select-line-height,
199
+ var(--osdk-typography-line-height-default)
200
+ );
201
+ color: var(
202
+ --osdk-select-item-color,
203
+ var(--osdk-typography-color-default-rest)
204
+ );
205
+ transition: background-color
206
+ var(
207
+ --osdk-select-transition-duration,
208
+ var(--osdk-emphasis-transition-duration)
209
+ )
122
210
  var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));
123
211
 
124
212
  &[data-highlighted] {
125
- background-color: var(--osdk-select-item-bg-highlighted, var(--osdk-surface-background-color-default-hover));
213
+ background-color: var(
214
+ --osdk-select-item-bg-highlighted,
215
+ var(--osdk-surface-background-color-default-hover)
216
+ );
126
217
  outline: none;
127
218
  }
128
219
 
129
220
  &[data-selected] {
130
- background-color: var(--osdk-select-item-bg-selected, var(--osdk-surface-layer-primary));
131
- color: var(--osdk-select-item-color-selected, var(--osdk-intent-primary-rest));
221
+ background-color: var(
222
+ --osdk-select-item-bg-selected,
223
+ var(--osdk-surface-layer-primary)
224
+ );
225
+ color: var(
226
+ --osdk-select-item-color-selected,
227
+ var(--osdk-intent-primary-rest)
228
+ );
132
229
  }
133
230
 
134
231
  &[data-disabled] {
@@ -0,0 +1,36 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import classnames from "classnames";
18
+ import React from "react";
19
+ import styles from "./SkeletonBar.module.css";
20
+ export function SkeletonBar({
21
+ width,
22
+ height,
23
+ maxWidth,
24
+ className
25
+ }) {
26
+ return /*#__PURE__*/React.createElement("div", {
27
+ "aria-hidden": "true",
28
+ className: classnames(styles.skeletonBar, className),
29
+ style: {
30
+ width,
31
+ height,
32
+ maxWidth
33
+ }
34
+ });
35
+ }
36
+ //# sourceMappingURL=SkeletonBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkeletonBar.js","names":["classnames","React","styles","SkeletonBar","width","height","maxWidth","className","createElement","skeletonBar","style"],"sources":["SkeletonBar.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./SkeletonBar.module.css\";\n\ninterface SkeletonBarProps {\n width?: string | number;\n height?: string | number;\n maxWidth?: string | number;\n className?: string;\n}\n\nexport function SkeletonBar({\n width,\n height,\n maxWidth,\n className,\n}: SkeletonBarProps): React.ReactElement {\n return (\n <div\n aria-hidden=\"true\"\n className={classnames(styles.skeletonBar, className)}\n style={{ width, height, maxWidth }}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,0BAA0B;AAS7C,OAAO,SAASC,WAAWA,CAAC;EAC1BC,KAAK;EACLC,MAAM;EACNC,QAAQ;EACRC;AACgB,CAAC,EAAsB;EACvC,oBACEN,KAAA,CAAAO,aAAA;IACE,eAAY,MAAM;IAClBD,SAAS,EAAEP,UAAU,CAACE,MAAM,CAACO,WAAW,EAAEF,SAAS,CAAE;IACrDG,KAAK,EAAE;MAAEN,KAAK;MAAEC,MAAM;MAAEC;IAAS;EAAE,CACpC,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ @keyframes skeleton-glow {
18
+ from {
19
+ background: var(--osdk-background-skeleton-from);
20
+ }
21
+
22
+ to {
23
+ background: var(--osdk-background-skeleton-to);
24
+ }
25
+ }
26
+
27
+ .skeletonBar {
28
+ animation: 1000ms linear infinite alternate skeleton-glow;
29
+ background: var(--osdk-background-skeleton-from);
30
+ border-radius: var(--osdk-surface-border-radius);
31
+ pointer-events: none;
32
+ user-select: none;
33
+ }
34
+
35
+ @media (prefers-reduced-motion: reduce) {
36
+ .skeletonBar {
37
+ animation: none;
38
+ }
39
+ }
@@ -15,9 +15,11 @@
15
15
  */
16
16
 
17
17
  import React, { useCallback, useMemo } from "react";
18
+ import { AddFilterPopover } from "./base/AddFilterPopover.js";
18
19
  import { BaseFilterList } from "./base/BaseFilterList.js";
19
20
  import { FilterInput } from "./FilterInput.js";
20
21
  import { useFilterListState } from "./hooks/useFilterListState.js";
22
+ import { useFilterVisibility } from "./hooks/useFilterVisibility.js";
21
23
  import { getFilterKey } from "./utils/getFilterKey.js";
22
24
  import { getFilterLabel } from "./utils/getFilterLabel.js";
23
25
  export function FilterList(props) {
@@ -28,11 +30,13 @@ export function FilterList(props) {
28
30
  collapsed,
29
31
  onCollapsedChange,
30
32
  filterDefinitions,
33
+ addFilterMode = "controlled",
31
34
  showResetButton = false,
32
35
  onReset,
33
36
  showActiveFilterCount = false,
34
37
  className,
35
38
  enableSorting,
39
+ onFilterAdded,
36
40
  onFilterRemoved,
37
41
  renderAddFilterButton
38
42
  } = props;
@@ -48,12 +52,45 @@ export function FilterList(props) {
48
52
  reset();
49
53
  onReset?.();
50
54
  }, [reset, onReset]);
51
- const visibleFilterDefinitions = useMemo(() => {
52
- if (!filterDefinitions) {
55
+ const uncontrolledAddFilterMode = addFilterMode === "uncontrolled";
56
+ const getIsVisible = useCallback(def => def.isVisible !== false, []);
57
+ const {
58
+ visibleDefinitions: managedVisibleDefinitions,
59
+ hiddenDefinitions: managedHiddenDefinitions,
60
+ showFilter,
61
+ hideFilter
62
+ } = useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible);
63
+ const simpleVisibleDefinitions = useMemo(() => {
64
+ if (filterDefinitions == null) {
53
65
  return undefined;
54
66
  }
55
67
  return filterDefinitions.filter(def => def.isVisible !== false);
56
68
  }, [filterDefinitions]);
69
+ const effectiveVisibleDefinitions = uncontrolledAddFilterMode ? managedVisibleDefinitions : simpleVisibleDefinitions;
70
+ const handleFilterRemoved = useCallback(filterKey => {
71
+ if (uncontrolledAddFilterMode) {
72
+ hideFilter(filterKey);
73
+ }
74
+ onFilterRemoved?.(filterKey);
75
+ }, [uncontrolledAddFilterMode, hideFilter, onFilterRemoved]);
76
+ const handleFilterShown = useCallback(filterKey => {
77
+ showFilter(filterKey);
78
+ onFilterAdded?.(filterKey, filterDefinitions ?? []);
79
+ }, [showFilter, onFilterAdded, filterDefinitions]);
80
+ const hiddenFilterItems = useMemo(() => managedHiddenDefinitions.map(def => ({
81
+ key: getFilterKey(def),
82
+ label: getFilterLabel(def)
83
+ })), [managedHiddenDefinitions]);
84
+ const effectiveRenderAddFilterButton = useMemo(() => {
85
+ if (uncontrolledAddFilterMode && managedHiddenDefinitions.length > 0) {
86
+ return () => /*#__PURE__*/React.createElement(AddFilterPopover, {
87
+ hiddenDefinitions: hiddenFilterItems,
88
+ onShowFilter: handleFilterShown
89
+ });
90
+ }
91
+ return renderAddFilterButton;
92
+ }, [uncontrolledAddFilterMode, managedHiddenDefinitions.length, hiddenFilterItems, handleFilterShown, renderAddFilterButton]);
93
+ const effectiveOnFilterRemoved = uncontrolledAddFilterMode ? handleFilterRemoved : onFilterRemoved;
57
94
  const renderInput = useCallback(({
58
95
  definition,
59
96
  filterKey,
@@ -72,7 +109,7 @@ export function FilterList(props) {
72
109
  titleIcon: titleIcon,
73
110
  collapsed: collapsed,
74
111
  onCollapsedChange: onCollapsedChange,
75
- filterDefinitions: visibleFilterDefinitions,
112
+ filterDefinitions: effectiveVisibleDefinitions,
76
113
  filterStates: filterStates,
77
114
  onFilterStateChanged: setFilterState,
78
115
  renderInput: renderInput,
@@ -83,9 +120,9 @@ export function FilterList(props) {
83
120
  showResetButton: showResetButton,
84
121
  showActiveFilterCount: showActiveFilterCount,
85
122
  enableSorting: enableSorting,
86
- onFilterRemoved: onFilterRemoved,
123
+ onFilterRemoved: effectiveOnFilterRemoved,
87
124
  className: className,
88
- renderAddFilterButton: renderAddFilterButton
125
+ renderAddFilterButton: effectiveRenderAddFilterButton
89
126
  });
90
127
  }
91
128
  //# sourceMappingURL=FilterList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterList.js","names":["React","useCallback","useMemo","BaseFilterList","FilterInput","useFilterListState","getFilterKey","getFilterLabel","FilterList","props","objectSet","title","titleIcon","collapsed","onCollapsedChange","filterDefinitions","showResetButton","onReset","showActiveFilterCount","className","enableSorting","onFilterRemoved","renderAddFilterButton","objectType","$objectSetInternals","def","filterStates","setFilterState","perFilterWhereClauses","activeFilterCount","reset","handleReset","visibleFilterDefinitions","undefined","filter","isVisible","renderInput","definition","filterKey","filterState","onFilterStateChanged","createElement","whereClause","get"],"sources":["FilterList.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, WhereClause } from \"@osdk/api\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { BaseFilterList } from \"./base/BaseFilterList.js\";\nimport type { RenderFilterInput } from \"./base/BaseFilterListApi.js\";\nimport { FilterInput } from \"./FilterInput.js\";\nimport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"./FilterListApi.js\";\nimport { useFilterListState } from \"./hooks/useFilterListState.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\n\nexport function FilterList<Q extends ObjectTypeDefinition>(\n props: FilterListProps<Q>,\n): React.ReactElement {\n const {\n objectSet,\n title,\n titleIcon,\n collapsed,\n onCollapsedChange,\n filterDefinitions,\n showResetButton = false,\n onReset,\n showActiveFilterCount = false,\n className,\n enableSorting,\n onFilterRemoved,\n renderAddFilterButton,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n\n const {\n filterStates,\n setFilterState,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n } = useFilterListState(props);\n\n const handleReset = useCallback(() => {\n reset();\n onReset?.();\n }, [reset, onReset]);\n\n const visibleFilterDefinitions = useMemo(() => {\n if (!filterDefinitions) {\n return undefined;\n }\n return filterDefinitions.filter(\n (def: FilterDefinitionUnion<Q>) => def.isVisible !== false,\n );\n }, [filterDefinitions]);\n\n const renderInput = useCallback<RenderFilterInput<FilterDefinitionUnion<Q>>>(\n ({ definition, filterKey, filterState, onFilterStateChanged }) => (\n <FilterInput\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={perFilterWhereClauses.get(filterKey)\n ?? ({} as WhereClause<Q>)}\n />\n ),\n [objectType, objectSet, perFilterWhereClauses],\n );\n\n return (\n <BaseFilterList\n title={title}\n titleIcon={titleIcon}\n collapsed={collapsed}\n onCollapsedChange={onCollapsedChange}\n filterDefinitions={visibleFilterDefinitions}\n filterStates={filterStates}\n onFilterStateChanged={setFilterState}\n renderInput={renderInput}\n getFilterKey={getFilterKey}\n getFilterLabel={getFilterLabel}\n activeFilterCount={activeFilterCount}\n onReset={handleReset}\n showResetButton={showResetButton}\n showActiveFilterCount={showActiveFilterCount}\n enableSorting={enableSorting}\n onFilterRemoved={onFilterRemoved}\n className={className}\n renderAddFilterButton={renderAddFilterButton}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACnD,SAASC,cAAc,QAAQ,0BAA0B;AAEzD,SAASC,WAAW,QAAQ,kBAAkB;AAK9C,SAASC,kBAAkB,QAAQ,+BAA+B;AAClE,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,cAAc,QAAQ,2BAA2B;AAE1D,OAAO,SAASC,UAAUA,CACxBC,KAAyB,EACL;EACpB,MAAM;IACJC,SAAS;IACTC,KAAK;IACLC,SAAS;IACTC,SAAS;IACTC,iBAAiB;IACjBC,iBAAiB;IACjBC,eAAe,GAAG,KAAK;IACvBC,OAAO;IACPC,qBAAqB,GAAG,KAAK;IAC7BC,SAAS;IACTC,aAAa;IACbC,eAAe;IACfC;EACF,CAAC,GAAGb,KAAK;EAET,MAAMc,UAAU,GAAGb,SAAS,CAACc,mBAAmB,CAACC,GAAG;EAEpD,MAAM;IACJC,YAAY;IACZC,cAAc;IACdC,qBAAqB;IACrBC,iBAAiB;IACjBC;EACF,CAAC,GAAGzB,kBAAkB,CAACI,KAAK,CAAC;EAE7B,MAAMsB,WAAW,GAAG9B,WAAW,CAAC,MAAM;IACpC6B,KAAK,CAAC,CAAC;IACPb,OAAO,GAAG,CAAC;EACb,CAAC,EAAE,CAACa,KAAK,EAAEb,OAAO,CAAC,CAAC;EAEpB,MAAMe,wBAAwB,GAAG9B,OAAO,CAAC,MAAM;IAC7C,IAAI,CAACa,iBAAiB,EAAE;MACtB,OAAOkB,SAAS;IAClB;IACA,OAAOlB,iBAAiB,CAACmB,MAAM,CAC5BT,GAA6B,IAAKA,GAAG,CAACU,SAAS,KAAK,KACvD,CAAC;EACH,CAAC,EAAE,CAACpB,iBAAiB,CAAC,CAAC;EAEvB,MAAMqB,WAAW,GAAGnC,WAAW,CAC7B,CAAC;IAAEoC,UAAU;IAAEC,SAAS;IAAEC,WAAW;IAAEC;EAAqB,CAAC,kBAC3DxC,KAAA,CAAAyC,aAAA,CAACrC,WAAW;IACVmB,UAAU,EAAEA,UAAW;IACvBb,SAAS,EAAEA,SAAU;IACrB2B,UAAU,EAAEA,UAAW;IACvBE,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CE,WAAW,EAAEd,qBAAqB,CAACe,GAAG,CAACL,SAAS,CAAC,IAC3C,CAAC;EAAqB,CAC7B,CACF,EACD,CAACf,UAAU,EAAEb,SAAS,EAAEkB,qBAAqB,CAC/C,CAAC;EAED,oBACE5B,KAAA,CAAAyC,aAAA,CAACtC,cAAc;IACbQ,KAAK,EAAEA,KAAM;IACbC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA,SAAU;IACrBC,iBAAiB,EAAEA,iBAAkB;IACrCC,iBAAiB,EAAEiB,wBAAyB;IAC5CN,YAAY,EAAEA,YAAa;IAC3Bc,oBAAoB,EAAEb,cAAe;IACrCS,WAAW,EAAEA,WAAY;IACzB9B,YAAY,EAAEA,YAAa;IAC3BC,cAAc,EAAEA,cAAe;IAC/BsB,iBAAiB,EAAEA,iBAAkB;IACrCZ,OAAO,EAAEc,WAAY;IACrBf,eAAe,EAAEA,eAAgB;IACjCE,qBAAqB,EAAEA,qBAAsB;IAC7CE,aAAa,EAAEA,aAAc;IAC7BC,eAAe,EAAEA,eAAgB;IACjCF,SAAS,EAAEA,SAAU;IACrBG,qBAAqB,EAAEA;EAAsB,CAC9C,CAAC;AAEN","ignoreList":[]}
1
+ {"version":3,"file":"FilterList.js","names":["React","useCallback","useMemo","AddFilterPopover","BaseFilterList","FilterInput","useFilterListState","useFilterVisibility","getFilterKey","getFilterLabel","FilterList","props","objectSet","title","titleIcon","collapsed","onCollapsedChange","filterDefinitions","addFilterMode","showResetButton","onReset","showActiveFilterCount","className","enableSorting","onFilterAdded","onFilterRemoved","renderAddFilterButton","objectType","$objectSetInternals","def","filterStates","setFilterState","perFilterWhereClauses","activeFilterCount","reset","handleReset","uncontrolledAddFilterMode","getIsVisible","isVisible","visibleDefinitions","managedVisibleDefinitions","hiddenDefinitions","managedHiddenDefinitions","showFilter","hideFilter","simpleVisibleDefinitions","undefined","filter","effectiveVisibleDefinitions","handleFilterRemoved","filterKey","handleFilterShown","hiddenFilterItems","map","key","label","effectiveRenderAddFilterButton","length","createElement","onShowFilter","effectiveOnFilterRemoved","renderInput","definition","filterState","onFilterStateChanged","whereClause","get"],"sources":["FilterList.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, WhereClause } from \"@osdk/api\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { AddFilterPopover } from \"./base/AddFilterPopover.js\";\nimport { BaseFilterList } from \"./base/BaseFilterList.js\";\nimport type { RenderFilterInput } from \"./base/BaseFilterListApi.js\";\nimport { FilterInput } from \"./FilterInput.js\";\nimport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"./FilterListApi.js\";\nimport { useFilterListState } from \"./hooks/useFilterListState.js\";\nimport { useFilterVisibility } from \"./hooks/useFilterVisibility.js\";\nimport { getFilterKey } from \"./utils/getFilterKey.js\";\nimport { getFilterLabel } from \"./utils/getFilterLabel.js\";\n\nexport function FilterList<Q extends ObjectTypeDefinition>(\n props: FilterListProps<Q>,\n): React.ReactElement {\n const {\n objectSet,\n title,\n titleIcon,\n collapsed,\n onCollapsedChange,\n filterDefinitions,\n addFilterMode = \"controlled\",\n showResetButton = false,\n onReset,\n showActiveFilterCount = false,\n className,\n enableSorting,\n onFilterAdded,\n onFilterRemoved,\n renderAddFilterButton,\n } = props;\n\n const objectType = objectSet.$objectSetInternals.def;\n\n const {\n filterStates,\n setFilterState,\n perFilterWhereClauses,\n activeFilterCount,\n reset,\n } = useFilterListState(props);\n\n const handleReset = useCallback(() => {\n reset();\n onReset?.();\n }, [reset, onReset]);\n\n const uncontrolledAddFilterMode = addFilterMode === \"uncontrolled\";\n\n const getIsVisible = useCallback(\n (def: FilterDefinitionUnion<Q>) => def.isVisible !== false,\n [],\n );\n\n const {\n visibleDefinitions: managedVisibleDefinitions,\n hiddenDefinitions: managedHiddenDefinitions,\n showFilter,\n hideFilter,\n } = useFilterVisibility(filterDefinitions, getFilterKey, getIsVisible);\n\n const simpleVisibleDefinitions = useMemo(() => {\n if (filterDefinitions == null) {\n return undefined;\n }\n return filterDefinitions.filter(\n (def: FilterDefinitionUnion<Q>) => def.isVisible !== false,\n );\n }, [filterDefinitions]);\n\n const effectiveVisibleDefinitions = uncontrolledAddFilterMode\n ? managedVisibleDefinitions\n : simpleVisibleDefinitions;\n\n const handleFilterRemoved = useCallback(\n (filterKey: string) => {\n if (uncontrolledAddFilterMode) {\n hideFilter(filterKey);\n }\n onFilterRemoved?.(filterKey);\n },\n [uncontrolledAddFilterMode, hideFilter, onFilterRemoved],\n );\n\n const handleFilterShown = useCallback(\n (filterKey: string) => {\n showFilter(filterKey);\n onFilterAdded?.(filterKey, filterDefinitions ?? []);\n },\n [showFilter, onFilterAdded, filterDefinitions],\n );\n\n const hiddenFilterItems = useMemo(\n () =>\n managedHiddenDefinitions.map((def) => ({\n key: getFilterKey(def),\n label: getFilterLabel(def),\n })),\n [managedHiddenDefinitions],\n );\n\n const effectiveRenderAddFilterButton = useMemo(() => {\n if (uncontrolledAddFilterMode && managedHiddenDefinitions.length > 0) {\n return () => (\n <AddFilterPopover\n hiddenDefinitions={hiddenFilterItems}\n onShowFilter={handleFilterShown}\n />\n );\n }\n return renderAddFilterButton;\n }, [\n uncontrolledAddFilterMode,\n managedHiddenDefinitions.length,\n hiddenFilterItems,\n handleFilterShown,\n renderAddFilterButton,\n ]);\n\n const effectiveOnFilterRemoved = uncontrolledAddFilterMode\n ? handleFilterRemoved\n : onFilterRemoved;\n\n const renderInput = useCallback<RenderFilterInput<FilterDefinitionUnion<Q>>>(\n ({ definition, filterKey, filterState, onFilterStateChanged }) => (\n <FilterInput\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={perFilterWhereClauses.get(filterKey)\n ?? ({} as WhereClause<Q>)}\n />\n ),\n [objectType, objectSet, perFilterWhereClauses],\n );\n\n return (\n <BaseFilterList\n title={title}\n titleIcon={titleIcon}\n collapsed={collapsed}\n onCollapsedChange={onCollapsedChange}\n filterDefinitions={effectiveVisibleDefinitions}\n filterStates={filterStates}\n onFilterStateChanged={setFilterState}\n renderInput={renderInput}\n getFilterKey={getFilterKey}\n getFilterLabel={getFilterLabel}\n activeFilterCount={activeFilterCount}\n onReset={handleReset}\n showResetButton={showResetButton}\n showActiveFilterCount={showActiveFilterCount}\n enableSorting={enableSorting}\n onFilterRemoved={effectiveOnFilterRemoved}\n className={className}\n renderAddFilterButton={effectiveRenderAddFilterButton}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterListApi.js","names":[],"sources":["FilterListApi.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 {\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n WhereClause,\n} from \"@osdk/api\";\nimport type React from \"react\";\nimport type {\n FilterState as FilterStateType,\n PropertyFilterDefinition,\n} from \"./FilterListItemApi.js\";\nimport type { CustomFilterDefinition } from \"./types/CustomRendererTypes.js\";\nimport type { KeywordSearchFilterDefinition } from \"./types/KeywordSearchTypes.js\";\nimport type {\n HasLinkFilterDefinition,\n LinkedPropertyFilterDefinition,\n} from \"./types/LinkedFilterTypes.js\";\n\n/**\n * Union type of all filter definition types\n */\nexport type FilterDefinitionUnion<Q extends ObjectTypeDefinition> =\n | PropertyFilterDefinition<Q>\n | HasLinkFilterDefinition<Q>\n | LinkedPropertyFilterDefinition<Q, LinkNames<Q>>\n | KeywordSearchFilterDefinition<Q>\n | CustomFilterDefinition<Q>;\n\n/**\n * Extract the key from a filter definition union\n */\nexport type FilterKey<Q extends ObjectTypeDefinition> =\n FilterDefinitionUnion<Q> extends infer D ? D extends { key: infer K } ? K\n : D extends { linkName: infer L } ? L\n : never\n : never;\n\n/**\n * Extract the filter state from a filter definition union\n */\nexport type FilterState<Q extends ObjectTypeDefinition> =\n FilterDefinitionUnion<Q> extends infer D\n ? D extends { filterState: infer S } ? S\n : never\n : never;\n\n/**\n * Map from filter definition objects to their current state.\n * Uses object identity for keys, ensuring stable lookups across reorders.\n */\nexport type FilterStatesMap<Q extends ObjectTypeDefinition> = Map<\n FilterDefinitionUnion<Q>,\n FilterStateType\n>;\n\nexport interface FilterListProps<Q extends ObjectTypeDefinition> {\n /**\n * The set of objects to be filtered\n */\n objectSet: ObjectSet<Q>;\n\n /**\n * Optional title to display in the filter list header\n */\n title?: string;\n\n /**\n * Optional icon to display next to the title\n */\n titleIcon?: React.ReactNode;\n\n /**\n * The definition for all supported filter items in the list\n * If not supplied, all filterable properties will be available\n */\n filterDefinitions?: Array<FilterDefinitionUnion<Q>>;\n\n /**\n * The current where clause to filter the objectSet.\n * If provided, the filter clause is controlled.\n */\n filterClause?: WhereClause<Q>;\n\n /**\n * Called when the filter clause changes.\n * The filters are joined by the selected filterOperator.\n * Required in controlled mode.\n *\n * @param newClause The updated filter clause\n */\n onFilterClauseChanged?: (newClause: WhereClause<Q>) => void;\n\n /**\n * The logical operator to join multiple filters\n *\n * @default \"and\"\n */\n filterOperator?: \"and\" | \"or\";\n\n /**\n * Called when filter state changes\n *\n * @param definition The filter definition whose state changed\n * @param newState The updated filter state\n */\n onFilterStateChanged?: (\n definition: FilterDefinitionUnion<Q>,\n newState: FilterStateType,\n ) => void;\n\n /**\n * Called when a filter is added\n * If provided, user will be allowed to add filters\n *\n * @param filterKey The key of the added filter\n * @param newDefinitions The filter list with the new filter added\n */\n onFilterAdded?: (\n filterKey: FilterKey<Q>,\n newDefinitions: Array<FilterDefinitionUnion<Q>>,\n ) => void;\n\n /**\n * Called when a filter is removed\n * If provided, user will be allowed to remove filters\n *\n * @param filterKey The key of the removed filter\n */\n onFilterRemoved?: (filterKey: FilterKey<Q>) => void;\n\n /**\n * Enable drag-and-drop reordering of filters.\n * When true, drag handles are rendered and filters can be reordered.\n * Reorder state is managed internally; consumers who need to track order\n * should use controlled filterDefinitions.\n */\n enableSorting?: boolean;\n\n /**\n * Whether the filter list panel is collapsed\n */\n collapsed?: boolean;\n\n /**\n * Called when the collapsed state changes\n */\n onCollapsedChange?: (collapsed: boolean) => void;\n\n /**\n * Initial filter states for hydrating from external storage.\n * These states are merged over definition defaults on mount.\n * Use onFilterStateChanged to persist state changes externally.\n */\n initialFilterStates?: Map<string, FilterStateType>;\n\n /**\n * Show reset filters button in header\n */\n showResetButton?: boolean;\n\n /**\n * Called when reset button is clicked\n */\n onReset?: () => void;\n\n /**\n * Show count of active filters in header\n */\n showActiveFilterCount?: boolean;\n\n /**\n * Additional CSS class name\n */\n className?: string;\n\n /**\n * Custom render function for the \"Add filter\" button.\n * When not provided, a default button is shown if onFilterAdded is set.\n */\n renderAddFilterButton?: () => React.ReactNode;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"FilterListApi.js","names":[],"sources":["FilterListApi.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 {\n LinkNames,\n ObjectSet,\n ObjectTypeDefinition,\n WhereClause,\n} from \"@osdk/api\";\nimport type React from \"react\";\nimport type {\n FilterState as FilterStateType,\n PropertyFilterDefinition,\n} from \"./FilterListItemApi.js\";\nimport type { CustomFilterDefinition } from \"./types/CustomRendererTypes.js\";\nimport type { KeywordSearchFilterDefinition } from \"./types/KeywordSearchTypes.js\";\nimport type {\n HasLinkFilterDefinition,\n LinkedPropertyFilterDefinition,\n} from \"./types/LinkedFilterTypes.js\";\n\n/**\n * Union type of all filter definition types\n */\nexport type FilterDefinitionUnion<Q extends ObjectTypeDefinition> =\n | PropertyFilterDefinition<Q>\n | HasLinkFilterDefinition<Q>\n | LinkedPropertyFilterDefinition<Q, LinkNames<Q>>\n | KeywordSearchFilterDefinition<Q>\n | CustomFilterDefinition<Q>;\n\n/**\n * Extract the key from a filter definition union\n */\nexport type FilterKey<Q extends ObjectTypeDefinition> =\n FilterDefinitionUnion<Q> extends infer D ? D extends { key: infer K } ? K\n : D extends { linkName: infer L } ? L\n : never\n : never;\n\n/**\n * Extract the filter state from a filter definition union\n */\nexport type FilterState<Q extends ObjectTypeDefinition> =\n FilterDefinitionUnion<Q> extends infer D\n ? D extends { filterState: infer S } ? S\n : never\n : never;\n\n/**\n * Map from filter definition objects to their current state.\n * Uses object identity for keys, ensuring stable lookups across reorders.\n */\nexport type FilterStatesMap<Q extends ObjectTypeDefinition> = Map<\n FilterDefinitionUnion<Q>,\n FilterStateType\n>;\n\nexport interface FilterListProps<Q extends ObjectTypeDefinition> {\n /**\n * The set of objects to be filtered\n */\n objectSet: ObjectSet<Q>;\n\n /**\n * Optional title to display in the filter list header\n */\n title?: string;\n\n /**\n * Optional icon to display next to the title\n */\n titleIcon?: React.ReactNode;\n\n /**\n * The definition for all supported filter items in the list\n * If not supplied, all filterable properties will be available\n */\n filterDefinitions?: Array<FilterDefinitionUnion<Q>>;\n\n /**\n * The current where clause to filter the objectSet.\n * If provided, the filter clause is controlled.\n */\n filterClause?: WhereClause<Q>;\n\n /**\n * Called when the filter clause changes.\n * The filters are joined by the selected filterOperator.\n * Required in controlled mode.\n *\n * @param newClause The updated filter clause\n */\n onFilterClauseChanged?: (newClause: WhereClause<Q>) => void;\n\n /**\n * The logical operator to join multiple filters\n *\n * @default \"and\"\n */\n filterOperator?: \"and\" | \"or\";\n\n /**\n * Called when filter state changes\n *\n * @param definition The filter definition whose state changed\n * @param newState The updated filter state\n */\n onFilterStateChanged?: (\n definition: FilterDefinitionUnion<Q>,\n newState: FilterStateType,\n ) => void;\n\n /**\n * Controls how filter visibility (add/remove) is managed.\n *\n * - `\"controlled\"` (default): The consumer manages which filters are\n * visible via `filterDefinitions`. Filters with `isVisible: false` are\n * excluded from the rendered list.\n * - `\"uncontrolled\"`: FilterList manages visibility internally. An \"Add\n * filter\" popover is rendered for filters with `isVisible: false`, and\n * each visible filter shows a remove button.\n *\n * @default \"controlled\"\n */\n addFilterMode?: \"controlled\" | \"uncontrolled\";\n\n /**\n * Called when a filter is added (shown).\n *\n * In uncontrolled mode, this fires when a user selects a hidden filter\n * from the \"Add filter\" popover.\n *\n * @param filterKey The key of the added filter\n * @param newDefinitions The current filter definitions array\n */\n onFilterAdded?: (\n filterKey: FilterKey<Q>,\n newDefinitions: Array<FilterDefinitionUnion<Q>>,\n ) => void;\n\n /**\n * Called when a filter is removed (hidden).\n *\n * In uncontrolled mode, this fires as a notification after the filter\n * is hidden internally.\n *\n * @param filterKey The key of the removed filter\n */\n onFilterRemoved?: (filterKey: FilterKey<Q>) => void;\n\n /**\n * Enable drag-and-drop reordering of filters.\n * When true, drag handles are rendered and filters can be reordered.\n * Reorder state is managed internally; consumers who need to track order\n * should use controlled filterDefinitions.\n */\n enableSorting?: boolean;\n\n /**\n * Whether the filter list panel is collapsed\n */\n collapsed?: boolean;\n\n /**\n * Called when the collapsed state changes\n */\n onCollapsedChange?: (collapsed: boolean) => void;\n\n /**\n * Initial filter states for hydrating from external storage.\n * These states are merged over definition defaults on mount.\n * Use onFilterStateChanged to persist state changes externally.\n */\n initialFilterStates?: Map<string, FilterStateType>;\n\n /**\n * Show reset filters button in header\n */\n showResetButton?: boolean;\n\n /**\n * Called when reset button is clicked\n */\n onReset?: () => void;\n\n /**\n * Show count of active filters in header\n */\n showActiveFilterCount?: boolean;\n\n /**\n * Additional CSS class name\n */\n className?: string;\n\n /**\n * Custom render function for the \"Add filter\" button.\n * Only used in controlled mode. In uncontrolled mode, the built-in\n * AddFilterPopover is rendered automatically.\n */\n renderAddFilterButton?: () => React.ReactNode;\n}\n"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { Menu } from "@base-ui/react/menu";
18
+ import React, { memo, useCallback } from "react";
19
+ import styles from "./AddFilterPopover.module.css";
20
+ function AddFilterPopoverInner({
21
+ hiddenDefinitions,
22
+ onShowFilter
23
+ }) {
24
+ const handleItemClick = useCallback(event => {
25
+ const key = event.currentTarget.dataset.key;
26
+ if (key != null) {
27
+ onShowFilter(key);
28
+ }
29
+ }, [onShowFilter]);
30
+ return /*#__PURE__*/React.createElement(Menu.Root, null, /*#__PURE__*/React.createElement(Menu.Trigger, {
31
+ className: styles.trigger
32
+ }, "+ Add filter"), /*#__PURE__*/React.createElement(Menu.Portal, null, /*#__PURE__*/React.createElement(Menu.Positioner, {
33
+ className: styles.positioner,
34
+ sideOffset: 4
35
+ }, /*#__PURE__*/React.createElement(Menu.Popup, {
36
+ className: styles.popup
37
+ }, hiddenDefinitions.map(item => /*#__PURE__*/React.createElement(Menu.Item, {
38
+ key: item.key,
39
+ className: styles.menuItem,
40
+ "data-key": item.key,
41
+ onClick: handleItemClick
42
+ }, item.label))))));
43
+ }
44
+ export const AddFilterPopover = /*#__PURE__*/memo(AddFilterPopoverInner);
45
+ //# sourceMappingURL=AddFilterPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddFilterPopover.js","names":["Menu","React","memo","useCallback","styles","AddFilterPopoverInner","hiddenDefinitions","onShowFilter","handleItemClick","event","key","currentTarget","dataset","createElement","Root","Trigger","className","trigger","Portal","Positioner","positioner","sideOffset","Popup","popup","map","item","Item","menuItem","onClick","label","AddFilterPopover"],"sources":["AddFilterPopover.tsx"],"sourcesContent":["/*\n * Copyright 2026 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 { Menu } from \"@base-ui/react/menu\";\nimport React, { memo, useCallback } from \"react\";\nimport styles from \"./AddFilterPopover.module.css\";\n\ninterface HiddenFilterItem {\n key: string;\n label: string;\n}\n\ninterface AddFilterPopoverProps {\n hiddenDefinitions: Array<HiddenFilterItem>;\n onShowFilter: (key: string) => void;\n}\n\nfunction AddFilterPopoverInner({\n hiddenDefinitions,\n onShowFilter,\n}: AddFilterPopoverProps): React.ReactElement {\n const handleItemClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const key = event.currentTarget.dataset.key;\n if (key != null) {\n onShowFilter(key);\n }\n },\n [onShowFilter],\n );\n\n return (\n <Menu.Root>\n <Menu.Trigger className={styles.trigger}>\n + Add filter\n </Menu.Trigger>\n <Menu.Portal>\n <Menu.Positioner className={styles.positioner} sideOffset={4}>\n <Menu.Popup className={styles.popup}>\n {hiddenDefinitions.map((item) => (\n <Menu.Item\n key={item.key}\n className={styles.menuItem}\n data-key={item.key}\n onClick={handleItemClick}\n >\n {item.label}\n </Menu.Item>\n ))}\n </Menu.Popup>\n </Menu.Positioner>\n </Menu.Portal>\n </Menu.Root>\n );\n}\n\nexport const AddFilterPopover: React.MemoExoticComponent<\n typeof AddFilterPopoverInner\n> = memo(AddFilterPopoverInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,IAAI,QAAQ,qBAAqB;AAC1C,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAChD,OAAOC,MAAM,MAAM,+BAA+B;AAYlD,SAASC,qBAAqBA,CAAC;EAC7BC,iBAAiB;EACjBC;AACqB,CAAC,EAAsB;EAC5C,MAAMC,eAAe,GAAGL,WAAW,CAChCM,KAAuC,IAAK;IAC3C,MAAMC,GAAG,GAAGD,KAAK,CAACE,aAAa,CAACC,OAAO,CAACF,GAAG;IAC3C,IAAIA,GAAG,IAAI,IAAI,EAAE;MACfH,YAAY,CAACG,GAAG,CAAC;IACnB;EACF,CAAC,EACD,CAACH,YAAY,CACf,CAAC;EAED,oBACEN,KAAA,CAAAY,aAAA,CAACb,IAAI,CAACc,IAAI,qBACRb,KAAA,CAAAY,aAAA,CAACb,IAAI,CAACe,OAAO;IAACC,SAAS,EAAEZ,MAAM,CAACa;EAAQ,GAAC,cAE3B,CAAC,eACfhB,KAAA,CAAAY,aAAA,CAACb,IAAI,CAACkB,MAAM,qBACVjB,KAAA,CAAAY,aAAA,CAACb,IAAI,CAACmB,UAAU;IAACH,SAAS,EAAEZ,MAAM,CAACgB,UAAW;IAACC,UAAU,EAAE;EAAE,gBAC3DpB,KAAA,CAAAY,aAAA,CAACb,IAAI,CAACsB,KAAK;IAACN,SAAS,EAAEZ,MAAM,CAACmB;EAAM,GACjCjB,iBAAiB,CAACkB,GAAG,CAAEC,IAAI,iBAC1BxB,KAAA,CAAAY,aAAA,CAACb,IAAI,CAAC0B,IAAI;IACRhB,GAAG,EAAEe,IAAI,CAACf,GAAI;IACdM,SAAS,EAAEZ,MAAM,CAACuB,QAAS;IAC3B,YAAUF,IAAI,CAACf,GAAI;IACnBkB,OAAO,EAAEpB;EAAgB,GAExBiB,IAAI,CAACI,KACG,CACZ,CACS,CACG,CACN,CACJ,CAAC;AAEhB;AAEA,OAAO,MAAMC,gBAEZ,gBAAG5B,IAAI,CAACG,qBAAqB,CAAC","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ .trigger {
18
+ font-family: var(--osdk-filter-header-font-family);
19
+ font-size: var(--osdk-filter-header-reset-font-size);
20
+ color: var(--osdk-filter-header-reset-color);
21
+ background: var(--osdk-filter-header-button-bg);
22
+ border: none;
23
+ cursor: pointer;
24
+ padding: var(--osdk-filter-header-reset-padding);
25
+ border-radius: var(--osdk-filter-header-button-border-radius);
26
+ transition: background-color var(--osdk-filter-header-button-transition);
27
+ width: 100%;
28
+
29
+ &:hover {
30
+ background: var(--osdk-filter-header-button-bg-hover);
31
+ }
32
+
33
+ &:active {
34
+ background: var(--osdk-filter-header-button-bg-active);
35
+ }
36
+
37
+ &:focus-visible {
38
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
39
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
40
+ }
41
+
42
+ @media (prefers-reduced-motion: reduce) {
43
+ transition: none;
44
+ }
45
+ }
46
+
47
+ .positioner {
48
+ z-index: var(--osdk-surface-z-index-3);
49
+ }
50
+
51
+ .popup {
52
+ background: var(--osdk-filter-item-menu-bg);
53
+ border: var(--osdk-filter-item-menu-border);
54
+ border-radius: var(--osdk-filter-item-menu-border-radius);
55
+ box-shadow: var(--osdk-filter-item-menu-shadow);
56
+ padding: var(--osdk-filter-item-menu-padding);
57
+ }
58
+
59
+ .menuItem {
60
+ display: flex;
61
+ align-items: center;
62
+ gap: var(--osdk-surface-spacing);
63
+ padding: var(--osdk-filter-item-menu-item-padding);
64
+ font-family: var(--osdk-filter-item-menu-item-font-family);
65
+ font-size: var(--osdk-filter-item-menu-item-font-size);
66
+ color: var(--osdk-filter-item-menu-item-color);
67
+ border-radius: var(--osdk-filter-item-menu-item-border-radius);
68
+ cursor: pointer;
69
+ border: none;
70
+ background: transparent;
71
+ width: 100%;
72
+ text-align: left;
73
+
74
+ &:hover,
75
+ &[data-highlighted] {
76
+ background: var(--osdk-filter-item-menu-item-bg-hover);
77
+ }
78
+
79
+ &:focus-visible {
80
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
81
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
82
+ }
83
+ }