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

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 (420) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +5 -3
  3. package/build/browser/base-components/action-button/ActionButton.module.css +0 -4
  4. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
  5. package/build/browser/base-components/dialog/Dialog.module.css +0 -8
  6. package/build/browser/base-components/draggable-list/DraggableList.js +4 -2
  7. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
  8. package/build/browser/base-components/draggable-list/DraggableList.module.css +0 -8
  9. package/build/browser/base-components/tooltip/Tooltip.js +91 -0
  10. package/build/browser/base-components/tooltip/Tooltip.js.map +1 -0
  11. package/build/browser/base-components/tooltip/Tooltip.module.css +70 -0
  12. package/build/browser/base-components/tooltip/Tooltip.module.css.js +11 -0
  13. package/build/browser/base-components/tooltip/index.js +18 -0
  14. package/build/browser/base-components/tooltip/index.js.map +1 -0
  15. package/build/browser/filter-list/FilterInput.js +132 -0
  16. package/build/browser/filter-list/FilterInput.js.map +1 -0
  17. package/build/browser/filter-list/FilterList.js +91 -0
  18. package/build/browser/filter-list/FilterList.js.map +1 -0
  19. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  20. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  21. package/build/browser/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  22. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -0
  23. package/build/browser/filter-list/base/BaseFilterListApi.js +2 -0
  24. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -0
  25. package/build/browser/filter-list/base/FilterIcons.js +63 -0
  26. package/build/browser/filter-list/base/FilterIcons.js.map +1 -0
  27. package/build/browser/filter-list/base/FilterList.module.css +22 -1
  28. package/build/browser/filter-list/base/FilterList.module.css.js +2 -0
  29. package/build/browser/filter-list/base/FilterListContent.js +21 -20
  30. package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
  31. package/build/browser/filter-list/base/FilterListHeader.js +8 -3
  32. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  33. package/build/browser/filter-list/base/FilterListHeader.module.css +25 -1
  34. package/build/browser/filter-list/base/FilterListHeader.module.css.js +3 -0
  35. package/build/browser/filter-list/base/FilterListItem.js +36 -17
  36. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  37. package/build/browser/filter-list/base/FilterListItem.module.css +58 -2
  38. package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -0
  39. package/build/browser/filter-list/base/SortableFilterListItem.js +6 -6
  40. package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
  41. package/build/browser/filter-list/base/index.js +1 -2
  42. package/build/browser/filter-list/base/index.js.map +1 -1
  43. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +34 -15
  44. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  45. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  46. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +2 -1
  47. package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  48. package/build/browser/filter-list/base/inputs/ListogramInput.js +17 -21
  49. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  50. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +25 -19
  51. package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  52. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -14
  53. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  54. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  55. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -1
  56. package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -23
  57. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  58. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  59. package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  60. package/build/browser/filter-list/base/inputs/RangeInput.js +2 -32
  61. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  62. package/build/browser/filter-list/base/inputs/RangeInput.module.css +16 -14
  63. package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  64. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +6 -13
  65. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  66. package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -14
  67. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  68. package/build/browser/filter-list/base/inputs/TimelineInput.js +2 -2
  69. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
  70. package/build/browser/filter-list/base/inputs/TimelineInput.module.css +14 -12
  71. package/build/browser/filter-list/base/inputs/shared.module.css +5 -4
  72. package/build/browser/filter-list/hooks/useFilterListState.js +29 -9
  73. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  74. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  75. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  76. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  77. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  78. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  79. package/build/browser/filter-list/inputs/DateRangeFilterInput.js +105 -0
  80. package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  81. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +508 -0
  82. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  83. package/build/browser/filter-list/inputs/ListogramFilterInput.js +62 -0
  84. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  85. package/build/browser/filter-list/inputs/MultiDateFilterInput.js +38 -0
  86. package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  87. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  88. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  89. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  90. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  91. package/build/browser/filter-list/inputs/PropertyFilterInput.js +129 -0
  92. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  93. package/build/browser/filter-list/inputs/SingleDateFilterInput.js +38 -0
  94. package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  95. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  96. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  97. package/build/browser/filter-list/inputs/TextTagsFilterInput.js +54 -0
  98. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  99. package/build/browser/filter-list/inputs/TimelineFilterInput.js +49 -0
  100. package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  101. package/build/browser/filter-list/inputs/ToggleFilterInput.js +36 -0
  102. package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  103. package/build/browser/filter-list/types/AggregationTypes.js +2 -0
  104. package/build/browser/filter-list/types/AggregationTypes.js.map +1 -0
  105. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  106. package/build/browser/filter-list/types/index.js +0 -2
  107. package/build/browser/filter-list/types/index.js.map +1 -1
  108. package/build/browser/filter-list/utils/filterStateSerialization.js +42 -0
  109. package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -0
  110. package/build/browser/filter-list/utils/filterStateToWhereClause.js +36 -13
  111. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  112. package/build/browser/filter-list/utils/filterValues.js +26 -0
  113. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  114. package/build/browser/object-table/ColumnConfigDialog.module.css +0 -9
  115. package/build/browser/object-table/DefaultCellRenderer.js +6 -1
  116. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  117. package/build/browser/object-table/EditableCell.js +76 -9
  118. package/build/browser/object-table/EditableCell.js.map +1 -1
  119. package/build/browser/object-table/EditableCell.module.css +47 -8
  120. package/build/browser/object-table/EditableCell.module.css.js +5 -1
  121. package/build/browser/object-table/MultiColumnSortDialog.js +4 -1
  122. package/build/browser/object-table/MultiColumnSortDialog.js.map +1 -1
  123. package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -4
  124. package/build/browser/object-table/ObjectTable.js +4 -1
  125. package/build/browser/object-table/ObjectTable.js.map +1 -1
  126. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  127. package/build/browser/object-table/SelectionCells.js +1 -0
  128. package/build/browser/object-table/SelectionCells.js.map +1 -1
  129. package/build/browser/object-table/Table.js +2 -2
  130. package/build/browser/object-table/Table.js.map +1 -1
  131. package/build/browser/object-table/TableBody.js +1 -1
  132. package/build/browser/object-table/TableBody.js.map +1 -1
  133. package/build/browser/object-table/TableEditContainer.js +27 -16
  134. package/build/browser/object-table/TableEditContainer.js.map +1 -1
  135. package/build/browser/object-table/TableEditContainer.module.css +27 -0
  136. package/build/browser/object-table/TableEditContainer.module.css.js +5 -1
  137. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -12
  138. package/build/browser/object-table/TableRow.js +2 -2
  139. package/build/browser/object-table/TableRow.js.map +1 -1
  140. package/build/browser/object-table/hooks/useColumnDefs.js +2 -1
  141. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  142. package/build/browser/object-table/hooks/useEditableTable.js +21 -2
  143. package/build/browser/object-table/hooks/useEditableTable.js.map +1 -1
  144. package/build/browser/object-table/utils/types.js.map +1 -1
  145. package/build/browser/public/experimental.js +4 -1
  146. package/build/browser/public/experimental.js.map +1 -1
  147. package/build/browser/shared/ErrorBoundary.module.css +14 -14
  148. package/build/browser/styles.css +354 -132
  149. package/build/cjs/public/experimental.cjs +2955 -2165
  150. package/build/cjs/public/experimental.cjs.map +1 -1
  151. package/build/cjs/public/experimental.css +669 -496
  152. package/build/cjs/public/experimental.css.map +1 -1
  153. package/build/cjs/public/experimental.d.cts +80 -6
  154. package/build/esm/base-components/action-button/ActionButton.module.css +0 -4
  155. package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
  156. package/build/esm/base-components/dialog/Dialog.module.css +0 -8
  157. package/build/esm/base-components/draggable-list/DraggableList.js +4 -2
  158. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
  159. package/build/esm/base-components/draggable-list/DraggableList.module.css +0 -8
  160. package/build/esm/base-components/tooltip/Tooltip.js +91 -0
  161. package/build/esm/base-components/tooltip/Tooltip.js.map +1 -0
  162. package/build/esm/base-components/tooltip/Tooltip.module.css +70 -0
  163. package/build/esm/base-components/tooltip/index.js +18 -0
  164. package/build/esm/base-components/tooltip/index.js.map +1 -0
  165. package/build/esm/filter-list/FilterInput.js +132 -0
  166. package/build/esm/filter-list/FilterInput.js.map +1 -0
  167. package/build/esm/filter-list/FilterList.js +91 -0
  168. package/build/esm/filter-list/FilterList.js.map +1 -0
  169. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  170. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  171. package/build/esm/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  172. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -0
  173. package/build/esm/filter-list/base/BaseFilterListApi.js +2 -0
  174. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -0
  175. package/build/esm/filter-list/base/FilterIcons.js +63 -0
  176. package/build/esm/filter-list/base/FilterIcons.js.map +1 -0
  177. package/build/esm/filter-list/base/FilterList.module.css +22 -1
  178. package/build/esm/filter-list/base/FilterListContent.js +21 -20
  179. package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
  180. package/build/esm/filter-list/base/FilterListHeader.js +8 -3
  181. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  182. package/build/esm/filter-list/base/FilterListHeader.module.css +25 -1
  183. package/build/esm/filter-list/base/FilterListItem.js +36 -17
  184. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  185. package/build/esm/filter-list/base/FilterListItem.module.css +58 -2
  186. package/build/esm/filter-list/base/SortableFilterListItem.js +6 -6
  187. package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
  188. package/build/esm/filter-list/base/index.js +1 -2
  189. package/build/esm/filter-list/base/index.js.map +1 -1
  190. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +34 -15
  191. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  192. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  193. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  194. package/build/esm/filter-list/base/inputs/ListogramInput.js +17 -21
  195. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  196. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +25 -19
  197. package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  198. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -14
  199. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  200. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  201. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -23
  202. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  203. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  204. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  205. package/build/esm/filter-list/base/inputs/RangeInput.js +2 -32
  206. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  207. package/build/esm/filter-list/base/inputs/RangeInput.module.css +16 -14
  208. package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  209. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +6 -13
  210. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  211. package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -14
  212. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  213. package/build/esm/filter-list/base/inputs/TimelineInput.js +2 -2
  214. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
  215. package/build/esm/filter-list/base/inputs/TimelineInput.module.css +14 -12
  216. package/build/esm/filter-list/base/inputs/shared.module.css +5 -4
  217. package/build/esm/filter-list/hooks/useFilterListState.js +29 -9
  218. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  219. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  220. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  221. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  222. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  223. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  224. package/build/esm/filter-list/inputs/DateRangeFilterInput.js +105 -0
  225. package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  226. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +508 -0
  227. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  228. package/build/esm/filter-list/inputs/ListogramFilterInput.js +62 -0
  229. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  230. package/build/esm/filter-list/inputs/MultiDateFilterInput.js +38 -0
  231. package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  232. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  233. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  234. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  235. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  236. package/build/esm/filter-list/inputs/PropertyFilterInput.js +129 -0
  237. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  238. package/build/esm/filter-list/inputs/SingleDateFilterInput.js +38 -0
  239. package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  240. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  241. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  242. package/build/esm/filter-list/inputs/TextTagsFilterInput.js +54 -0
  243. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  244. package/build/esm/filter-list/inputs/TimelineFilterInput.js +49 -0
  245. package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  246. package/build/esm/filter-list/inputs/ToggleFilterInput.js +36 -0
  247. package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  248. package/build/esm/filter-list/types/AggregationTypes.js +2 -0
  249. package/build/esm/filter-list/types/AggregationTypes.js.map +1 -0
  250. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  251. package/build/esm/filter-list/types/index.js +0 -2
  252. package/build/esm/filter-list/types/index.js.map +1 -1
  253. package/build/esm/filter-list/utils/filterStateSerialization.js +42 -0
  254. package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -0
  255. package/build/esm/filter-list/utils/filterStateToWhereClause.js +36 -13
  256. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  257. package/build/esm/filter-list/utils/filterValues.js +26 -0
  258. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  259. package/build/esm/object-table/ColumnConfigDialog.module.css +0 -9
  260. package/build/esm/object-table/DefaultCellRenderer.js +6 -1
  261. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  262. package/build/esm/object-table/EditableCell.js +76 -9
  263. package/build/esm/object-table/EditableCell.js.map +1 -1
  264. package/build/esm/object-table/EditableCell.module.css +47 -8
  265. package/build/esm/object-table/MultiColumnSortDialog.js +4 -1
  266. package/build/esm/object-table/MultiColumnSortDialog.js.map +1 -1
  267. package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -4
  268. package/build/esm/object-table/ObjectTable.js +4 -1
  269. package/build/esm/object-table/ObjectTable.js.map +1 -1
  270. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  271. package/build/esm/object-table/SelectionCells.js +1 -0
  272. package/build/esm/object-table/SelectionCells.js.map +1 -1
  273. package/build/esm/object-table/Table.js +2 -2
  274. package/build/esm/object-table/Table.js.map +1 -1
  275. package/build/esm/object-table/TableBody.js +1 -1
  276. package/build/esm/object-table/TableBody.js.map +1 -1
  277. package/build/esm/object-table/TableEditContainer.js +27 -16
  278. package/build/esm/object-table/TableEditContainer.js.map +1 -1
  279. package/build/esm/object-table/TableEditContainer.module.css +27 -0
  280. package/build/esm/object-table/TableHeaderWithPopover.module.css +0 -12
  281. package/build/esm/object-table/TableRow.js +2 -2
  282. package/build/esm/object-table/TableRow.js.map +1 -1
  283. package/build/esm/object-table/hooks/useColumnDefs.js +2 -1
  284. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  285. package/build/esm/object-table/hooks/useEditableTable.js +21 -2
  286. package/build/esm/object-table/hooks/useEditableTable.js.map +1 -1
  287. package/build/esm/object-table/utils/types.js.map +1 -1
  288. package/build/esm/public/experimental.js +4 -1
  289. package/build/esm/public/experimental.js.map +1 -1
  290. package/build/esm/shared/ErrorBoundary.module.css +14 -14
  291. package/build/types/base-components/tooltip/Tooltip.d.ts +31 -0
  292. package/build/types/base-components/tooltip/Tooltip.d.ts.map +1 -0
  293. package/build/types/base-components/tooltip/index.d.ts +1 -0
  294. package/build/types/base-components/tooltip/index.d.ts.map +1 -0
  295. package/build/types/filter-list/{base/FilterInput.d.ts → FilterInput.d.ts} +2 -2
  296. package/build/types/filter-list/FilterInput.d.ts.map +1 -0
  297. package/build/types/filter-list/{base/FilterList.d.ts → FilterList.d.ts} +1 -1
  298. package/build/types/filter-list/FilterList.d.ts.map +1 -0
  299. package/build/types/filter-list/FilterListApi.d.ts +14 -0
  300. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  301. package/build/types/filter-list/FilterListItemApi.d.ts +13 -0
  302. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  303. package/build/types/filter-list/base/BaseFilterList.d.ts +3 -0
  304. package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -0
  305. package/build/types/filter-list/base/BaseFilterListApi.d.ts +29 -0
  306. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -0
  307. package/build/types/filter-list/base/FilterIcons.d.ts +4 -0
  308. package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -0
  309. package/build/types/filter-list/base/FilterListContent.d.ts +8 -8
  310. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
  311. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
  312. package/build/types/filter-list/base/FilterListItem.d.ts +7 -8
  313. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  314. package/build/types/filter-list/base/SortableFilterListItem.d.ts +7 -8
  315. package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
  316. package/build/types/filter-list/base/index.d.ts +2 -2
  317. package/build/types/filter-list/base/index.d.ts.map +1 -1
  318. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +7 -13
  319. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -1
  320. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +7 -12
  321. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -1
  322. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +10 -13
  323. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  324. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +7 -13
  325. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  326. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +5 -11
  327. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
  328. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +7 -12
  329. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
  330. package/build/types/filter-list/base/inputs/RangeInput.d.ts +7 -14
  331. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
  332. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +7 -13
  333. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  334. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +7 -13
  335. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
  336. package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
  337. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  338. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -5
  339. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
  340. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +14 -0
  341. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -0
  342. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts +10 -0
  343. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -0
  344. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +12 -0
  345. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -0
  346. package/build/types/filter-list/{base/inputs → inputs}/LinkedPropertyInput.d.ts +2 -2
  347. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -0
  348. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +16 -0
  349. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -0
  350. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts +9 -0
  351. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -0
  352. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +13 -0
  353. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -0
  354. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +12 -0
  355. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -0
  356. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +17 -0
  357. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -0
  358. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +9 -0
  359. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -0
  360. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +13 -0
  361. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -0
  362. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +13 -0
  363. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -0
  364. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts +9 -0
  365. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -0
  366. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts +9 -0
  367. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -0
  368. package/build/types/filter-list/types/AggregationTypes.d.ts +5 -0
  369. package/build/types/filter-list/types/AggregationTypes.d.ts.map +1 -0
  370. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +0 -19
  371. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
  372. package/build/types/filter-list/types/index.d.ts +0 -2
  373. package/build/types/filter-list/types/index.d.ts.map +1 -1
  374. package/build/types/filter-list/utils/filterStateSerialization.d.ts +3 -0
  375. package/build/types/filter-list/utils/filterStateSerialization.d.ts.map +1 -0
  376. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +1 -1
  377. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  378. package/build/types/filter-list/utils/filterValues.d.ts +2 -0
  379. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  380. package/build/types/object-table/EditableCell.d.ts +8 -2
  381. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  382. package/build/types/object-table/ObjectTableApi.d.ts +7 -0
  383. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  384. package/build/types/object-table/Table.d.ts +4 -0
  385. package/build/types/object-table/Table.d.ts.map +1 -1
  386. package/build/types/object-table/TableEditContainer.d.ts +1 -1
  387. package/build/types/object-table/TableEditContainer.d.ts.map +1 -1
  388. package/build/types/object-table/TableRow.d.ts +2 -2
  389. package/build/types/object-table/TableRow.d.ts.map +1 -1
  390. package/build/types/object-table/hooks/useEditableTable.d.ts.map +1 -1
  391. package/build/types/object-table/utils/types.d.ts +7 -4
  392. package/build/types/object-table/utils/types.d.ts.map +1 -1
  393. package/build/types/public/experimental.d.ts +4 -1
  394. package/build/types/public/experimental.d.ts.map +1 -1
  395. package/package.json +5 -5
  396. package/build/browser/filter-list/base/FilterInput.js +0 -542
  397. package/build/browser/filter-list/base/FilterInput.js.map +0 -1
  398. package/build/browser/filter-list/base/FilterList.js.map +0 -1
  399. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  400. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  401. package/build/browser/filter-list/types/AddFilterMenuTypes.js +0 -2
  402. package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  403. package/build/browser/filter-list/types/FilterPanelTypes.js +0 -2
  404. package/build/browser/filter-list/types/FilterPanelTypes.js.map +0 -1
  405. package/build/esm/filter-list/base/FilterInput.js +0 -542
  406. package/build/esm/filter-list/base/FilterInput.js.map +0 -1
  407. package/build/esm/filter-list/base/FilterList.js.map +0 -1
  408. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  409. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  410. package/build/esm/filter-list/types/AddFilterMenuTypes.js +0 -2
  411. package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  412. package/build/esm/filter-list/types/FilterPanelTypes.js +0 -2
  413. package/build/esm/filter-list/types/FilterPanelTypes.js.map +0 -1
  414. package/build/types/filter-list/base/FilterInput.d.ts.map +0 -1
  415. package/build/types/filter-list/base/FilterList.d.ts.map +0 -1
  416. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +0 -1
  417. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +0 -56
  418. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +0 -1
  419. package/build/types/filter-list/types/FilterPanelTypes.d.ts +0 -18
  420. package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +0 -1
@@ -15,6 +15,7 @@
15
15
  */
16
16
 
17
17
  import { Button } from "@base-ui/react/button";
18
+ import classnames from "classnames";
18
19
  import React, { memo, useCallback } from "react";
19
20
  import styles from "./FilterListHeader.module.css.js";
20
21
  function FilterListHeaderInner({
@@ -38,9 +39,13 @@ function FilterListHeaderInner({
38
39
  "aria-expanded": !collapsed,
39
40
  "aria-label": collapsed ? "Expand filters" : "Collapse filters"
40
41
  }, /*#__PURE__*/React.createElement("span", {
41
- className: styles.collapseIcon,
42
+ className: classnames(styles.collapseIcon, collapsed && styles.collapsed)
43
+ })), /*#__PURE__*/React.createElement("div", {
44
+ className: styles.headerContentWrapper,
42
45
  "data-collapsed": collapsed
43
- })), !collapsed && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
46
+ }, /*#__PURE__*/React.createElement("div", {
47
+ className: styles.headerContentInner
48
+ }, /*#__PURE__*/React.createElement("div", {
44
49
  className: styles.titleContainer
45
50
  }, titleIcon && /*#__PURE__*/React.createElement("span", {
46
51
  className: styles.titleIcon
@@ -52,7 +57,7 @@ function FilterListHeaderInner({
52
57
  className: styles.resetButton,
53
58
  onClick: onReset,
54
59
  disabled: activeFilterCount === 0
55
- }, "Reset")));
60
+ }, "Reset"))));
56
61
  }
57
62
  export const FilterListHeader = /*#__PURE__*/memo(FilterListHeaderInner);
58
63
  //# sourceMappingURL=FilterListHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterListHeader.js","names":["Button","React","memo","useCallback","styles","FilterListHeaderInner","title","titleIcon","collapsed","onCollapsedChange","showResetButton","onReset","showActiveFilterCount","activeFilterCount","handleCollapseClick","createElement","className","header","collapseButton","onClick","collapseIcon","Fragment","titleContainer","activeCount","resetButton","disabled","FilterListHeader"],"sources":["FilterListHeader.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 React, { memo, type ReactNode, useCallback } from \"react\";\nimport styles from \"./FilterListHeader.module.css\";\n\ninterface FilterListHeaderProps {\n title?: string;\n titleIcon?: ReactNode;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n showResetButton?: boolean;\n onReset?: () => void;\n showActiveFilterCount?: boolean;\n activeFilterCount?: number;\n}\n\nfunction FilterListHeaderInner({\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n showResetButton,\n onReset,\n showActiveFilterCount,\n activeFilterCount = 0,\n}: FilterListHeaderProps): React.ReactElement {\n const showCollapseButton = onCollapsedChange != null;\n\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n\n return (\n <div className={styles.header}>\n {showCollapseButton && (\n <Button\n className={styles.collapseButton}\n onClick={handleCollapseClick}\n aria-expanded={!collapsed}\n aria-label={collapsed ? \"Expand filters\" : \"Collapse filters\"}\n >\n <span\n className={styles.collapseIcon}\n data-collapsed={collapsed}\n />\n </Button>\n )}\n\n {!collapsed && (\n <>\n <div className={styles.titleContainer}>\n {titleIcon && (\n <span className={styles.titleIcon}>\n {titleIcon}\n </span>\n )}\n {title && (\n <span className={styles.title}>\n {title}\n </span>\n )}\n {showActiveFilterCount && activeFilterCount > 0 && (\n <span className={styles.activeCount}>\n ({activeFilterCount})\n </span>\n )}\n </div>\n\n {showResetButton && (\n <Button\n className={styles.resetButton}\n onClick={onReset}\n disabled={activeFilterCount === 0}\n >\n Reset\n </Button>\n )}\n </>\n )}\n </div>\n );\n}\n\nexport const FilterListHeader: React.MemoExoticComponent<\n typeof FilterListHeaderInner\n> = memo(FilterListHeaderInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,OAAOC,KAAK,IAAIC,IAAI,EAAkBC,WAAW,QAAQ,OAAO;AAChE,OAAOC,MAAM,MAAM,+BAA+B;AAalD,SAASC,qBAAqBA,CAAC;EAC7BC,KAAK;EACLC,SAAS;EACTC,SAAS,GAAG,KAAK;EACjBC,iBAAiB;EACjBC,eAAe;EACfC,OAAO;EACPC,qBAAqB;EACrBC,iBAAiB,GAAG;AACC,CAAC,EAAsB;EAG5C,MAAMC,mBAAmB,GAAGX,WAAW,CAAC,MAAM;IAC5CM,iBAAiB,GAAG,CAACD,SAAS,CAAC;EACjC,CAAC,EAAE,CAACC,iBAAiB,EAAED,SAAS,CAAC,CAAC;EAElC,oBACEP,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACa;EAAO,GAPLR,iBAAiB,IAAI,IAAI,iBAS9CR,KAAA,CAAAc,aAAA,CAACf,MAAM;IACLgB,SAAS,EAAEZ,MAAM,CAACc,cAAe;IACjCC,OAAO,EAAEL,mBAAoB;IAC7B,iBAAe,CAACN,SAAU;IAC1B,cAAYA,SAAS,GAAG,gBAAgB,GAAG;EAAmB,gBAE9DP,KAAA,CAAAc,aAAA;IACEC,SAAS,EAAEZ,MAAM,CAACgB,YAAa;IAC/B,kBAAgBZ;EAAU,CAC3B,CACK,CACT,EAEA,CAACA,SAAS,iBACTP,KAAA,CAAAc,aAAA,CAAAd,KAAA,CAAAoB,QAAA,qBACEpB,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACkB;EAAe,GACnCf,SAAS,iBACRN,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACG;EAAU,GAC/BA,SACG,CACP,EACAD,KAAK,iBACJL,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACE;EAAM,GAC3BA,KACG,CACP,EACAM,qBAAqB,IAAIC,iBAAiB,GAAG,CAAC,iBAC7CZ,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACmB;EAAY,GAAC,GAClC,EAACV,iBAAiB,EAAC,GAChB,CAEL,CAAC,EAELH,eAAe,iBACdT,KAAA,CAAAc,aAAA,CAACf,MAAM;IACLgB,SAAS,EAAEZ,MAAM,CAACoB,WAAY;IAC9BL,OAAO,EAAER,OAAQ;IACjBc,QAAQ,EAAEZ,iBAAiB,KAAK;EAAE,GACnC,OAEO,CAEV,CAED,CAAC;AAEV;AAEA,OAAO,MAAMa,gBAEZ,gBAAGxB,IAAI,CAACG,qBAAqB,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"FilterListHeader.js","names":["Button","classnames","React","memo","useCallback","styles","FilterListHeaderInner","title","titleIcon","collapsed","onCollapsedChange","showResetButton","onReset","showActiveFilterCount","activeFilterCount","handleCollapseClick","createElement","className","header","collapseButton","onClick","collapseIcon","headerContentWrapper","headerContentInner","titleContainer","activeCount","resetButton","disabled","FilterListHeader"],"sources":["FilterListHeader.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 classnames from \"classnames\";\nimport React, { memo, type ReactNode, useCallback } from \"react\";\nimport styles from \"./FilterListHeader.module.css\";\n\ninterface FilterListHeaderProps {\n title?: string;\n titleIcon?: ReactNode;\n collapsed?: boolean;\n onCollapsedChange?: (collapsed: boolean) => void;\n showResetButton?: boolean;\n onReset?: () => void;\n showActiveFilterCount?: boolean;\n activeFilterCount?: number;\n}\n\nfunction FilterListHeaderInner({\n title,\n titleIcon,\n collapsed = false,\n onCollapsedChange,\n showResetButton,\n onReset,\n showActiveFilterCount,\n activeFilterCount = 0,\n}: FilterListHeaderProps): React.ReactElement {\n const showCollapseButton = onCollapsedChange != null;\n\n const handleCollapseClick = useCallback(() => {\n onCollapsedChange?.(!collapsed);\n }, [onCollapsedChange, collapsed]);\n\n return (\n <div className={styles.header}>\n {showCollapseButton && (\n <Button\n className={styles.collapseButton}\n onClick={handleCollapseClick}\n aria-expanded={!collapsed}\n aria-label={collapsed ? \"Expand filters\" : \"Collapse filters\"}\n >\n <span\n className={classnames(\n styles.collapseIcon,\n collapsed && styles.collapsed,\n )}\n />\n </Button>\n )}\n\n <div\n className={styles.headerContentWrapper}\n data-collapsed={collapsed}\n >\n <div className={styles.headerContentInner}>\n <div className={styles.titleContainer}>\n {titleIcon && (\n <span className={styles.titleIcon}>\n {titleIcon}\n </span>\n )}\n {title && (\n <span className={styles.title}>\n {title}\n </span>\n )}\n {showActiveFilterCount && activeFilterCount > 0 && (\n <span className={styles.activeCount}>\n ({activeFilterCount})\n </span>\n )}\n </div>\n\n {showResetButton && (\n <Button\n className={styles.resetButton}\n onClick={onReset}\n disabled={activeFilterCount === 0}\n >\n Reset\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport const FilterListHeader: React.MemoExoticComponent<\n typeof FilterListHeaderInner\n> = memo(FilterListHeaderInner);\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAkBC,WAAW,QAAQ,OAAO;AAChE,OAAOC,MAAM,MAAM,+BAA+B;AAalD,SAASC,qBAAqBA,CAAC;EAC7BC,KAAK;EACLC,SAAS;EACTC,SAAS,GAAG,KAAK;EACjBC,iBAAiB;EACjBC,eAAe;EACfC,OAAO;EACPC,qBAAqB;EACrBC,iBAAiB,GAAG;AACC,CAAC,EAAsB;EAG5C,MAAMC,mBAAmB,GAAGX,WAAW,CAAC,MAAM;IAC5CM,iBAAiB,GAAG,CAACD,SAAS,CAAC;EACjC,CAAC,EAAE,CAACC,iBAAiB,EAAED,SAAS,CAAC,CAAC;EAElC,oBACEP,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACa;EAAO,GAPLR,iBAAiB,IAAI,IAAI,iBAS9CR,KAAA,CAAAc,aAAA,CAAChB,MAAM;IACLiB,SAAS,EAAEZ,MAAM,CAACc,cAAe;IACjCC,OAAO,EAAEL,mBAAoB;IAC7B,iBAAe,CAACN,SAAU;IAC1B,cAAYA,SAAS,GAAG,gBAAgB,GAAG;EAAmB,gBAE9DP,KAAA,CAAAc,aAAA;IACEC,SAAS,EAAEhB,UAAU,CACnBI,MAAM,CAACgB,YAAY,EACnBZ,SAAS,IAAIJ,MAAM,CAACI,SACtB;EAAE,CACH,CACK,CACT,eAEDP,KAAA,CAAAc,aAAA;IACEC,SAAS,EAAEZ,MAAM,CAACiB,oBAAqB;IACvC,kBAAgBb;EAAU,gBAE1BP,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACkB;EAAmB,gBACxCrB,KAAA,CAAAc,aAAA;IAAKC,SAAS,EAAEZ,MAAM,CAACmB;EAAe,GACnChB,SAAS,iBACRN,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACG;EAAU,GAC/BA,SACG,CACP,EACAD,KAAK,iBACJL,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACE;EAAM,GAC3BA,KACG,CACP,EACAM,qBAAqB,IAAIC,iBAAiB,GAAG,CAAC,iBAC7CZ,KAAA,CAAAc,aAAA;IAAMC,SAAS,EAAEZ,MAAM,CAACoB;EAAY,GAAC,GAClC,EAACX,iBAAiB,EAAC,GAChB,CAEL,CAAC,EAELH,eAAe,iBACdT,KAAA,CAAAc,aAAA,CAAChB,MAAM;IACLiB,SAAS,EAAEZ,MAAM,CAACqB,WAAY;IAC9BN,OAAO,EAAER,OAAQ;IACjBe,QAAQ,EAAEb,iBAAiB,KAAK;EAAE,GACnC,OAEO,CAEP,CACF,CACF,CAAC;AAEV;AAEA,OAAO,MAAMc,gBAEZ,gBAAGzB,IAAI,CAACG,qBAAqB,CAAC","ignoreList":[]}
@@ -92,10 +92,34 @@
92
92
  }
93
93
  }
94
94
 
95
- .collapseIcon[data-collapsed="true"] {
95
+ .collapsed {
96
96
  transform: rotate(-135deg);
97
97
  }
98
98
 
99
+ .headerContentWrapper {
100
+ display: grid;
101
+ grid-template-columns: 1fr;
102
+ overflow: hidden;
103
+ transition: grid-template-columns var(--osdk-filter-list-collapse-transition);
104
+
105
+ @media (prefers-reduced-motion: reduce) {
106
+ transition: none;
107
+ }
108
+ }
109
+
110
+ .headerContentWrapper[data-collapsed="true"] {
111
+ grid-template-columns: 0fr;
112
+ }
113
+
114
+ .headerContentInner {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: space-between;
118
+ flex: 1;
119
+ overflow: hidden;
120
+ min-width: 0;
121
+ }
122
+
99
123
  .resetButton {
100
124
  font-family: var(--osdk-filter-header-font-family);
101
125
  font-size: var(--osdk-filter-header-reset-font-size);
@@ -7,6 +7,9 @@ const styles = {
7
7
  "activeCount": "FilterListHeader-module__activeCount___GyBsnsQL",
8
8
  "collapseButton": "FilterListHeader-module__collapseButton___N1-sj3B3",
9
9
  "collapseIcon": "FilterListHeader-module__collapseIcon___P4YOgKig",
10
+ "collapsed": "FilterListHeader-module__collapsed___RKg0zje4",
11
+ "headerContentWrapper": "FilterListHeader-module__headerContentWrapper___Jb48M86S",
12
+ "headerContentInner": "FilterListHeader-module__headerContentInner___d2-TGJNm",
10
13
  "resetButton": "FilterListHeader-module__resetButton___jLcUypov"
11
14
  };
12
15
 
@@ -15,53 +15,72 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
15
15
  * limitations under the License.
16
16
  */
17
17
 
18
+ import { Button } from "@base-ui/react/button";
18
19
  import classnames from "classnames";
19
20
  import React, { memo, useCallback } from "react";
20
21
  import { ErrorBoundary } from "../../shared/ErrorBoundary.js";
21
- import { getFilterLabel } from "../utils/getFilterLabel.js";
22
+ import { supportsExcluding } from "../utils/filterValues.js";
22
23
  import { DragHandleIcon } from "./DragHandleIcon.js";
23
- import { FilterInput } from "./FilterInput.js";
24
+ import { ExcludeIcon, IncludeIcon, RemoveIcon } from "./FilterIcons.js";
24
25
  import styles from "./FilterListItem.module.css.js";
25
26
  function FilterListItemInner({
26
- objectType,
27
- objectSet,
28
27
  definition,
29
28
  filterKey,
29
+ label,
30
30
  filterState,
31
31
  onFilterStateChanged,
32
- whereClause,
32
+ onFilterRemoved,
33
+ renderInput,
33
34
  dragHandleAttributes,
34
35
  dragHandleListeners,
35
36
  className,
36
37
  style
37
38
  }) {
38
- const label = getFilterLabel(definition);
39
39
  const handleFilterStateChanged = useCallback(newState => {
40
40
  onFilterStateChanged(filterKey, newState);
41
41
  }, [filterKey, onFilterStateChanged]);
42
+ const handleToggleExclude = useCallback(() => {
43
+ if (filterState) {
44
+ onFilterStateChanged(filterKey, {
45
+ ...filterState,
46
+ isExcluding: !filterState.isExcluding
47
+ });
48
+ }
49
+ }, [filterKey, filterState, onFilterStateChanged]);
50
+ const handleRemove = useCallback(() => {
51
+ onFilterRemoved?.(filterKey);
52
+ }, [filterKey, onFilterRemoved]);
53
+ const isExcluding = filterState?.isExcluding ?? false;
54
+ const showExcludeToggle = supportsExcluding(filterState);
42
55
  return /*#__PURE__*/React.createElement("div", {
43
56
  className: classnames(styles.filterItem, className),
44
57
  style: style,
45
- "data-filter-type": definition.type
58
+ "data-excluding": isExcluding || undefined
46
59
  }, /*#__PURE__*/React.createElement("div", {
47
60
  className: styles.itemHeader
48
- }, dragHandleAttributes && /*#__PURE__*/React.createElement("button", _extends({
49
- type: "button",
61
+ }, dragHandleAttributes && /*#__PURE__*/React.createElement(Button, _extends({
50
62
  className: styles.dragHandle,
51
63
  "aria-label": `Reorder ${label}`
52
64
  }, dragHandleAttributes, dragHandleListeners), /*#__PURE__*/React.createElement(DragHandleIcon, null)), /*#__PURE__*/React.createElement("span", {
53
65
  className: styles.itemLabel
54
- }, label)), /*#__PURE__*/React.createElement("div", {
66
+ }, label), showExcludeToggle && /*#__PURE__*/React.createElement(Button, {
67
+ className: styles.excludeToggle,
68
+ onClick: handleToggleExclude,
69
+ "aria-pressed": isExcluding,
70
+ "aria-label": isExcluding ? "Switch to include mode" : "Switch to exclude mode"
71
+ }, isExcluding ? /*#__PURE__*/React.createElement(ExcludeIcon, null) : /*#__PURE__*/React.createElement(IncludeIcon, null)), onFilterRemoved && /*#__PURE__*/React.createElement(Button, {
72
+ className: styles.removeButton,
73
+ onClick: handleRemove,
74
+ "aria-label": `Remove ${label} filter`
75
+ }, /*#__PURE__*/React.createElement(RemoveIcon, null))), /*#__PURE__*/React.createElement("div", {
55
76
  className: styles.itemContent
56
77
  }, /*#__PURE__*/React.createElement(ErrorBoundary, {
57
78
  errorMessage: "Error loading filter"
58
- }, /*#__PURE__*/React.createElement(FilterInput, {
59
- objectType: objectType,
60
- objectSet: objectSet,
61
- definition: definition,
62
- filterState: filterState,
63
- onFilterStateChanged: handleFilterStateChanged,
64
- whereClause: whereClause
79
+ }, renderInput({
80
+ definition,
81
+ filterKey,
82
+ filterState,
83
+ onFilterStateChanged: handleFilterStateChanged
65
84
  }))));
66
85
  }
67
86
  export const FilterListItem = /*#__PURE__*/memo(FilterListItemInner);
@@ -1 +1 @@
1
- {"version":3,"file":"FilterListItem.js","names":["classnames","React","memo","useCallback","ErrorBoundary","getFilterLabel","DragHandleIcon","FilterInput","styles","FilterListItemInner","objectType","objectSet","definition","filterKey","filterState","onFilterStateChanged","whereClause","dragHandleAttributes","dragHandleListeners","className","style","label","handleFilterStateChanged","newState","createElement","filterItem","type","itemHeader","_extends","dragHandle","itemLabel","itemContent","errorMessage","FilterListItem"],"sources":["FilterListItem.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 DraggableAttributes,\n DraggableSyntheticListeners,\n} from \"@dnd-kit/core\";\nimport type { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { getFilterLabel } from \"../utils/getFilterLabel.js\";\nimport { DragHandleIcon } from \"./DragHandleIcon.js\";\nimport { FilterInput } from \"./FilterInput.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface FilterListItemProps<Q extends ObjectTypeDefinition> {\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: FilterDefinitionUnion<Q>;\n filterKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n whereClause: WhereClause<Q>;\n dragHandleAttributes?: DraggableAttributes;\n dragHandleListeners?: DraggableSyntheticListeners;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction FilterListItemInner<Q extends ObjectTypeDefinition>({\n objectType,\n objectSet,\n definition,\n filterKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n dragHandleAttributes,\n dragHandleListeners,\n className,\n style,\n}: FilterListItemProps<Q>): React.ReactElement {\n const label = getFilterLabel(definition);\n\n const handleFilterStateChanged = useCallback(\n (newState: FilterState) => {\n onFilterStateChanged(filterKey, newState);\n },\n [filterKey, onFilterStateChanged],\n );\n\n return (\n <div\n className={classnames(styles.filterItem, className)}\n style={style}\n data-filter-type={definition.type}\n >\n <div className={styles.itemHeader}>\n {dragHandleAttributes && (\n <button\n type=\"button\"\n className={styles.dragHandle}\n aria-label={`Reorder ${label}`}\n {...dragHandleAttributes}\n {...dragHandleListeners}\n >\n <DragHandleIcon />\n </button>\n )}\n <span className={styles.itemLabel}>{label}</span>\n </div>\n\n <div className={styles.itemContent}>\n <ErrorBoundary errorMessage=\"Error loading filter\">\n <FilterInput\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterState={filterState}\n onFilterStateChanged={handleFilterStateChanged}\n whereClause={whereClause}\n />\n </ErrorBoundary>\n </div>\n </div>\n );\n}\n\nexport const FilterListItem = memo(\n FilterListItemInner,\n) as typeof FilterListItemInner;\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAChD,SAASC,aAAa,QAAQ,+BAA+B;AAG7D,SAASC,cAAc,QAAQ,4BAA4B;AAC3D,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,OAAOC,MAAM,MAAM,6BAA6B;AAmBhD,SAASC,mBAAmBA,CAAiC;EAC3DC,UAAU;EACVC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,oBAAoB;EACpBC,WAAW;EACXC,oBAAoB;EACpBC,mBAAmB;EACnBC,SAAS;EACTC;AACsB,CAAC,EAAsB;EAC7C,MAAMC,KAAK,GAAGhB,cAAc,CAACO,UAAU,CAAC;EAExC,MAAMU,wBAAwB,GAAGnB,WAAW,CACzCoB,QAAqB,IAAK;IACzBR,oBAAoB,CAACF,SAAS,EAAEU,QAAQ,CAAC;EAC3C,CAAC,EACD,CAACV,SAAS,EAAEE,oBAAoB,CAClC,CAAC;EAED,oBACEd,KAAA,CAAAuB,aAAA;IACEL,SAAS,EAAEnB,UAAU,CAACQ,MAAM,CAACiB,UAAU,EAAEN,SAAS,CAAE;IACpDC,KAAK,EAAEA,KAAM;IACb,oBAAkBR,UAAU,CAACc;EAAK,gBAElCzB,KAAA,CAAAuB,aAAA;IAAKL,SAAS,EAAEX,MAAM,CAACmB;EAAW,GAC/BV,oBAAoB,iBACnBhB,KAAA,CAAAuB,aAAA,WAAAI,QAAA;IACEF,IAAI,EAAC,QAAQ;IACbP,SAAS,EAAEX,MAAM,CAACqB,UAAW;IAC7B,cAAY,WAAWR,KAAK;EAAG,GAC3BJ,oBAAoB,EACpBC,mBAAmB,gBAEvBjB,KAAA,CAAAuB,aAAA,CAAClB,cAAc,MAAE,CACX,CACT,eACDL,KAAA,CAAAuB,aAAA;IAAML,SAAS,EAAEX,MAAM,CAACsB;EAAU,GAAET,KAAY,CAC7C,CAAC,eAENpB,KAAA,CAAAuB,aAAA;IAAKL,SAAS,EAAEX,MAAM,CAACuB;EAAY,gBACjC9B,KAAA,CAAAuB,aAAA,CAACpB,aAAa;IAAC4B,YAAY,EAAC;EAAsB,gBAChD/B,KAAA,CAAAuB,aAAA,CAACjB,WAAW;IACVG,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,UAAU,EAAEA,UAAW;IACvBE,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEO,wBAAyB;IAC/CN,WAAW,EAAEA;EAAY,CAC1B,CACY,CACZ,CACF,CAAC;AAEV;AAEA,OAAO,MAAMiB,cAAc,gBAAG/B,IAAI,CAChCO,mBACF,CAA+B","ignoreList":[]}
1
+ {"version":3,"file":"FilterListItem.js","names":["Button","classnames","React","memo","useCallback","ErrorBoundary","supportsExcluding","DragHandleIcon","ExcludeIcon","IncludeIcon","RemoveIcon","styles","FilterListItemInner","definition","filterKey","label","filterState","onFilterStateChanged","onFilterRemoved","renderInput","dragHandleAttributes","dragHandleListeners","className","style","handleFilterStateChanged","newState","handleToggleExclude","isExcluding","handleRemove","showExcludeToggle","createElement","filterItem","undefined","itemHeader","_extends","dragHandle","itemLabel","excludeToggle","onClick","removeButton","itemContent","errorMessage","FilterListItem"],"sources":["FilterListItem.tsx"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport type {\n DraggableAttributes,\n DraggableSyntheticListeners,\n} from \"@dnd-kit/core\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback } from \"react\";\nimport { ErrorBoundary } from \"../../shared/ErrorBoundary.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { supportsExcluding } from \"../utils/filterValues.js\";\nimport type { RenderFilterInput } from \"./BaseFilterListApi.js\";\nimport { DragHandleIcon } from \"./DragHandleIcon.js\";\nimport { ExcludeIcon, IncludeIcon, RemoveIcon } from \"./FilterIcons.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface FilterListItemProps<D> {\n definition: D;\n filterKey: string;\n label: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n onFilterRemoved?: (filterKey: string) => void;\n renderInput: RenderFilterInput<D>;\n dragHandleAttributes?: DraggableAttributes;\n dragHandleListeners?: DraggableSyntheticListeners;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction FilterListItemInner<D>({\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n dragHandleAttributes,\n dragHandleListeners,\n className,\n style,\n}: FilterListItemProps<D>): React.ReactElement {\n const handleFilterStateChanged = useCallback(\n (newState: FilterState) => {\n onFilterStateChanged(filterKey, newState);\n },\n [filterKey, onFilterStateChanged],\n );\n\n const handleToggleExclude = useCallback(\n () => {\n if (filterState) {\n onFilterStateChanged(filterKey, {\n ...filterState,\n isExcluding: !filterState.isExcluding,\n });\n }\n },\n [filterKey, filterState, onFilterStateChanged],\n );\n\n const handleRemove = useCallback(\n () => {\n onFilterRemoved?.(filterKey);\n },\n [filterKey, onFilterRemoved],\n );\n\n const isExcluding = filterState?.isExcluding ?? false;\n const showExcludeToggle = supportsExcluding(filterState);\n\n return (\n <div\n className={classnames(styles.filterItem, className)}\n style={style}\n data-excluding={isExcluding || undefined}\n >\n <div className={styles.itemHeader}>\n {dragHandleAttributes && (\n <Button\n className={styles.dragHandle}\n aria-label={`Reorder ${label}`}\n {...dragHandleAttributes}\n {...dragHandleListeners}\n >\n <DragHandleIcon />\n </Button>\n )}\n <span className={styles.itemLabel}>{label}</span>\n {showExcludeToggle && (\n <Button\n className={styles.excludeToggle}\n onClick={handleToggleExclude}\n aria-pressed={isExcluding}\n aria-label={isExcluding\n ? \"Switch to include mode\"\n : \"Switch to exclude mode\"}\n >\n {isExcluding ? <ExcludeIcon /> : <IncludeIcon />}\n </Button>\n )}\n {onFilterRemoved && (\n <Button\n className={styles.removeButton}\n onClick={handleRemove}\n aria-label={`Remove ${label} filter`}\n >\n <RemoveIcon />\n </Button>\n )}\n </div>\n\n <div className={styles.itemContent}>\n <ErrorBoundary errorMessage=\"Error loading filter\">\n {renderInput({\n definition,\n filterKey,\n filterState,\n onFilterStateChanged: handleFilterStateChanged,\n })}\n </ErrorBoundary>\n </div>\n </div>\n );\n}\n\nexport const FilterListItem = memo(\n FilterListItemInner,\n) as typeof FilterListItemInner;\n"],"mappings":"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","ignoreList":[]}
@@ -26,6 +26,7 @@
26
26
  }
27
27
 
28
28
  .itemLabel {
29
+ flex: 1;
29
30
  font-family: var(--osdk-filter-item-label-font-family);
30
31
  font-size: var(--osdk-filter-item-label-font-size);
31
32
  font-weight: var(--osdk-filter-item-label-font-weight);
@@ -60,11 +61,66 @@
60
61
  }
61
62
 
62
63
  &:focus-visible {
63
- outline: 2px solid var(--osdk-filter-item-drag-handle-focus-outline-color);
64
- outline-offset: 2px;
64
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-item-drag-handle-focus-outline-color);
65
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
65
66
  }
66
67
  }
67
68
 
69
+ .excludeToggle {
70
+ display: flex;
71
+ align-items: center;
72
+ justify-content: center;
73
+ padding: var(--osdk-filter-item-exclude-toggle-padding);
74
+ margin-left: auto;
75
+ border: none;
76
+ background: transparent;
77
+ cursor: pointer;
78
+ border-radius: var(--osdk-filter-item-exclude-toggle-border-radius);
79
+ color: var(--osdk-filter-item-exclude-toggle-color);
80
+
81
+ &:hover {
82
+ color: var(--osdk-filter-item-exclude-toggle-color-hover);
83
+ background: var(--osdk-filter-item-exclude-toggle-bg-hover);
84
+ }
85
+
86
+ &:focus-visible {
87
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
88
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
89
+ }
90
+ }
91
+
92
+ .excludeToggle[aria-pressed="true"] {
93
+ color: var(--osdk-filter-item-exclude-toggle-color-active);
94
+ }
95
+
96
+ .removeButton {
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ padding: var(--osdk-filter-item-exclude-toggle-padding);
101
+ margin-left: var(--osdk-surface-spacing);
102
+ border: none;
103
+ background: transparent;
104
+ cursor: pointer;
105
+ border-radius: var(--osdk-filter-item-exclude-toggle-border-radius);
106
+ color: var(--osdk-filter-item-exclude-toggle-color);
107
+
108
+ &:hover {
109
+ color: var(--osdk-filter-item-exclude-toggle-color-hover);
110
+ background: var(--osdk-filter-item-exclude-toggle-bg-hover);
111
+ }
112
+
113
+ &:focus-visible {
114
+ outline: var(--osdk-filter-input-focus-outline-width) solid var(--osdk-filter-input-focus-outline-color);
115
+ outline-offset: var(--osdk-filter-input-focus-outline-offset);
116
+ }
117
+ }
118
+
119
+ .filterItem[data-excluding] {
120
+ border-left: var(--osdk-filter-item-exclude-border-width) solid var(--osdk-filter-item-exclude-border-color);
121
+ padding-left: var(--osdk-filter-item-gap);
122
+ }
123
+
68
124
  .dragging {
69
125
  opacity: var(--osdk-filter-item-dragging-opacity);
70
126
  }
@@ -5,6 +5,8 @@ const styles = {
5
5
  "itemLabel": "FilterListItem-module__itemLabel___cEnbqE59",
6
6
  "itemContent": "FilterListItem-module__itemContent___PfVHHhIy",
7
7
  "dragHandle": "FilterListItem-module__dragHandle___BwFrILWs",
8
+ "excludeToggle": "FilterListItem-module__excludeToggle___nWNDvntP",
9
+ "removeButton": "FilterListItem-module__removeButton___72cjHbqK",
8
10
  "dragging": "FilterListItem-module__dragging___S5-LGyfS"
9
11
  };
10
12
 
@@ -22,13 +22,13 @@ import { FilterListItem } from "./FilterListItem.js";
22
22
  import styles from "./FilterListItem.module.css.js";
23
23
  export function SortableFilterListItem({
24
24
  id,
25
- objectType,
26
- objectSet,
27
25
  definition,
28
26
  filterKey,
27
+ label,
29
28
  filterState,
30
29
  onFilterStateChanged,
31
- whereClause
30
+ onFilterRemoved,
31
+ renderInput
32
32
  }) {
33
33
  const {
34
34
  attributes,
@@ -49,13 +49,13 @@ export function SortableFilterListItem({
49
49
  style: style,
50
50
  className: classnames(isDragging && styles.dragging)
51
51
  }, /*#__PURE__*/React.createElement(FilterListItem, {
52
- objectType: objectType,
53
- objectSet: objectSet,
54
52
  definition: definition,
55
53
  filterKey: filterKey,
54
+ label: label,
56
55
  filterState: filterState,
57
56
  onFilterStateChanged: onFilterStateChanged,
58
- whereClause: whereClause,
57
+ onFilterRemoved: onFilterRemoved,
58
+ renderInput: renderInput,
59
59
  dragHandleAttributes: attributes,
60
60
  dragHandleListeners: listeners
61
61
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"SortableFilterListItem.js","names":["useSortable","CSS","classnames","React","useMemo","FilterListItem","styles","SortableFilterListItem","id","objectType","objectSet","definition","filterKey","filterState","onFilterStateChanged","whereClause","attributes","listeners","setNodeRef","transform","transition","isDragging","style","Transform","toString","undefined","createElement","ref","className","dragging","dragHandleAttributes","dragHandleListeners"],"sources":["SortableFilterListItem.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 { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport type { ObjectSet, ObjectTypeDefinition, WhereClause } from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport type { FilterDefinitionUnion } from \"../FilterListApi.js\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface SortableFilterListItemProps<Q extends ObjectTypeDefinition> {\n id: string;\n objectType: Q;\n objectSet: ObjectSet<Q>;\n definition: FilterDefinitionUnion<Q>;\n filterKey: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n whereClause: WhereClause<Q>;\n}\n\nexport function SortableFilterListItem<Q extends ObjectTypeDefinition>({\n id,\n objectType,\n objectSet,\n definition,\n filterKey,\n filterState,\n onFilterStateChanged,\n whereClause,\n}: SortableFilterListItemProps<Q>): React.ReactElement {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n const style = useMemo<React.CSSProperties>(() => ({\n transform: CSS.Transform.toString(transform),\n transition: transition ?? undefined,\n }), [transform, transition]);\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={classnames(isDragging && styles.dragging)}\n >\n <FilterListItem\n objectType={objectType}\n objectSet={objectSet}\n definition={definition}\n filterKey={filterKey}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n whereClause={whereClause}\n dragHandleAttributes={attributes}\n dragHandleListeners={listeners}\n />\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,GAAG,QAAQ,oBAAoB;AAExC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAGtC,SAASC,cAAc,QAAQ,qBAAqB;AACpD,OAAOC,MAAM,MAAM,6BAA6B;AAgBhD,OAAO,SAASC,sBAAsBA,CAAiC;EACrEC,EAAE;EACFC,UAAU;EACVC,SAAS;EACTC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,oBAAoB;EACpBC;AAC8B,CAAC,EAAsB;EACrD,MAAM;IACJC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC;EACF,CAAC,GAAGrB,WAAW,CAAC;IAAEQ;EAAG,CAAC,CAAC;EAEvB,MAAMc,KAAK,GAAGlB,OAAO,CAAsB,OAAO;IAChDe,SAAS,EAAElB,GAAG,CAACsB,SAAS,CAACC,QAAQ,CAACL,SAAS,CAAC;IAC5CC,UAAU,EAAEA,UAAU,IAAIK;EAC5B,CAAC,CAAC,EAAE,CAACN,SAAS,EAAEC,UAAU,CAAC,CAAC;EAE5B,oBACEjB,KAAA,CAAAuB,aAAA;IACEC,GAAG,EAAET,UAAW;IAChBI,KAAK,EAAEA,KAAM;IACbM,SAAS,EAAE1B,UAAU,CAACmB,UAAU,IAAIf,MAAM,CAACuB,QAAQ;EAAE,gBAErD1B,KAAA,CAAAuB,aAAA,CAACrB,cAAc;IACbI,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CC,WAAW,EAAEA,WAAY;IACzBe,oBAAoB,EAAEd,UAAW;IACjCe,mBAAmB,EAAEd;EAAU,CAChC,CACE,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"SortableFilterListItem.js","names":["useSortable","CSS","classnames","React","useMemo","FilterListItem","styles","SortableFilterListItem","id","definition","filterKey","label","filterState","onFilterStateChanged","onFilterRemoved","renderInput","attributes","listeners","setNodeRef","transform","transition","isDragging","style","Transform","toString","undefined","createElement","ref","className","dragging","dragHandleAttributes","dragHandleListeners"],"sources":["SortableFilterListItem.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 { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport type { FilterState } from \"../FilterListItemApi.js\";\nimport type { RenderFilterInput } from \"./BaseFilterListApi.js\";\nimport { FilterListItem } from \"./FilterListItem.js\";\nimport styles from \"./FilterListItem.module.css\";\n\ninterface SortableFilterListItemProps<D> {\n id: string;\n definition: D;\n filterKey: string;\n label: string;\n filterState: FilterState | undefined;\n onFilterStateChanged: (\n filterKey: string,\n state: FilterState,\n ) => void;\n onFilterRemoved?: (filterKey: string) => void;\n renderInput: RenderFilterInput<D>;\n}\n\nexport function SortableFilterListItem<D>({\n id,\n definition,\n filterKey,\n label,\n filterState,\n onFilterStateChanged,\n onFilterRemoved,\n renderInput,\n}: SortableFilterListItemProps<D>): React.ReactElement {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id });\n\n const style = useMemo<React.CSSProperties>(() => ({\n transform: CSS.Transform.toString(transform),\n transition: transition ?? undefined,\n }), [transform, transition]);\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={classnames(isDragging && styles.dragging)}\n >\n <FilterListItem\n definition={definition}\n filterKey={filterKey}\n label={label}\n filterState={filterState}\n onFilterStateChanged={onFilterStateChanged}\n onFilterRemoved={onFilterRemoved}\n renderInput={renderInput}\n dragHandleAttributes={attributes}\n dragHandleListeners={listeners}\n />\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,mBAAmB;AAC/C,SAASC,GAAG,QAAQ,oBAAoB;AACxC,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,OAAO,QAAQ,OAAO;AAGtC,SAASC,cAAc,QAAQ,qBAAqB;AACpD,OAAOC,MAAM,MAAM,6BAA6B;AAgBhD,OAAO,SAASC,sBAAsBA,CAAI;EACxCC,EAAE;EACFC,UAAU;EACVC,SAAS;EACTC,KAAK;EACLC,WAAW;EACXC,oBAAoB;EACpBC,eAAe;EACfC;AAC8B,CAAC,EAAsB;EACrD,MAAM;IACJC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC,SAAS;IACTC,UAAU;IACVC;EACF,CAAC,GAAGrB,WAAW,CAAC;IAAEQ;EAAG,CAAC,CAAC;EAEvB,MAAMc,KAAK,GAAGlB,OAAO,CAAsB,OAAO;IAChDe,SAAS,EAAElB,GAAG,CAACsB,SAAS,CAACC,QAAQ,CAACL,SAAS,CAAC;IAC5CC,UAAU,EAAEA,UAAU,IAAIK;EAC5B,CAAC,CAAC,EAAE,CAACN,SAAS,EAAEC,UAAU,CAAC,CAAC;EAE5B,oBACEjB,KAAA,CAAAuB,aAAA;IACEC,GAAG,EAAET,UAAW;IAChBI,KAAK,EAAEA,KAAM;IACbM,SAAS,EAAE1B,UAAU,CAACmB,UAAU,IAAIf,MAAM,CAACuB,QAAQ;EAAE,gBAErD1B,KAAA,CAAAuB,aAAA,CAACrB,cAAc;IACbI,UAAU,EAAEA,UAAW;IACvBC,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbC,WAAW,EAAEA,WAAY;IACzBC,oBAAoB,EAAEA,oBAAqB;IAC3CC,eAAe,EAAEA,eAAgB;IACjCC,WAAW,EAAEA,WAAY;IACzBe,oBAAoB,EAAEd,UAAW;IACjCe,mBAAmB,EAAEd;EAAU,CAChC,CACE,CAAC;AAEV","ignoreList":[]}
@@ -14,8 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export { FilterInput } from "./FilterInput.js";
18
- export { FilterList } from "./FilterList.js";
17
+ export { BaseFilterList } from "./BaseFilterList.js";
19
18
  export { FilterListContent } from "./FilterListContent.js";
20
19
  export { FilterListHeader } from "./FilterListHeader.js";
21
20
  export { FilterListItem } from "./FilterListItem.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FilterInput","FilterList","FilterListContent","FilterListHeader","FilterListItem"],"sources":["index.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\nexport { FilterInput } from \"./FilterInput.js\";\nexport { FilterList } from \"./FilterList.js\";\nexport { FilterListContent } from \"./FilterListContent.js\";\nexport { FilterListHeader } from \"./FilterListHeader.js\";\nexport { FilterListItem } from \"./FilterListItem.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,UAAU,QAAQ,iBAAiB;AAC5C,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,cAAc,QAAQ,qBAAqB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["BaseFilterList","FilterListContent","FilterListHeader","FilterListItem"],"sources":["index.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\nexport { BaseFilterList } from \"./BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"./BaseFilterListApi.js\";\nexport { FilterListContent } from \"./FilterListContent.js\";\nexport { FilterListHeader } from \"./FilterListHeader.js\";\nexport { FilterListItem } from \"./FilterListItem.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,qBAAqB;AAKpD,SAASC,iBAAiB,QAAQ,wBAAwB;AAC1D,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,cAAc,QAAQ,qBAAqB","ignoreList":[]}
@@ -17,26 +17,19 @@
17
17
  import classnames from "classnames";
18
18
  import React, { memo, useCallback, useMemo } from "react";
19
19
  import { Checkbox } from "../../../base-components/checkbox/Checkbox.js";
20
- import { usePropertyAggregation } from "../../hooks/usePropertyAggregation.js";
21
20
  import styles from "./CheckboxListInput.module.css.js";
22
21
  import sharedStyles from "./shared.module.css.js";
23
22
  function CheckboxListInputInner({
24
- objectType,
25
- propertyKey,
23
+ values,
24
+ isLoading,
25
+ error,
26
26
  selectedValues,
27
27
  onChange,
28
- whereClause,
28
+ colorMap,
29
29
  className,
30
30
  style
31
31
  }) {
32
- const {
33
- data,
34
- isLoading,
35
- error
36
- } = usePropertyAggregation(objectType, propertyKey, {
37
- where: whereClause
38
- });
39
- const values = useMemo(() => data.map(item => item.value), [data]);
32
+ const displayValues = useMemo(() => values.map(item => item.value), [values]);
40
33
  const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);
41
34
  const toggleValue = useCallback(value => {
42
35
  if (selectedSet.has(value)) {
@@ -45,18 +38,39 @@ function CheckboxListInputInner({
45
38
  onChange([...selectedValues, value]);
46
39
  }
47
40
  }, [selectedValues, selectedSet, onChange]);
41
+ const allSelected = useMemo(() => displayValues.length > 0 && displayValues.every(v => selectedSet.has(v)), [displayValues, selectedSet]);
42
+ const areSomeValuesSelected = useMemo(() => !allSelected && selectedValues.some(v => selectedSet.has(v)), [allSelected, selectedValues, selectedSet]);
43
+ const handleSelectAll = useCallback(() => {
44
+ if (allSelected) {
45
+ onChange([]);
46
+ } else {
47
+ onChange([...displayValues]);
48
+ }
49
+ }, [allSelected, displayValues, onChange]);
48
50
  return /*#__PURE__*/React.createElement("div", {
49
51
  className: classnames(styles.checkboxList, className),
50
52
  style: style,
51
53
  "data-loading": isLoading
52
54
  }, error && /*#__PURE__*/React.createElement("div", {
53
55
  className: sharedStyles.errorMessage
54
- }, "Error loading values: ", error.message), !error && values.length === 0 && /*#__PURE__*/React.createElement("div", {
56
+ }, "Error loading values: ", error.message), !error && displayValues.length === 0 && /*#__PURE__*/React.createElement("div", {
55
57
  className: sharedStyles.emptyMessage
56
- }, isLoading ? "Loading values..." : "No values available"), (values.length > 0 || isLoading) && /*#__PURE__*/React.createElement(React.Fragment, null, isLoading && /*#__PURE__*/React.createElement("div", {
58
+ }, isLoading ? "Loading values..." : "No values available"), (displayValues.length > 0 || isLoading) && /*#__PURE__*/React.createElement(React.Fragment, null, isLoading && /*#__PURE__*/React.createElement("div", {
57
59
  className: sharedStyles.loadingMessage
58
- }, "Updating..."), values.map(value => {
60
+ }, "Updating..."), /*#__PURE__*/React.createElement("div", {
61
+ className: styles.checkboxRow,
62
+ "data-select-all": true
63
+ }, /*#__PURE__*/React.createElement("label", {
64
+ className: styles.checkboxLabel
65
+ }, /*#__PURE__*/React.createElement(Checkbox, {
66
+ checked: allSelected,
67
+ indeterminate: areSomeValuesSelected,
68
+ onCheckedChange: handleSelectAll
69
+ }), /*#__PURE__*/React.createElement("span", {
70
+ className: styles.valueText
71
+ }, "Select all"))), displayValues.map(value => {
59
72
  const isSelected = selectedSet.has(value);
73
+ const color = colorMap?.[value];
60
74
  return /*#__PURE__*/React.createElement("div", {
61
75
  key: value,
62
76
  className: styles.checkboxRow,
@@ -66,6 +80,11 @@ function CheckboxListInputInner({
66
80
  }, /*#__PURE__*/React.createElement(Checkbox, {
67
81
  checked: isSelected,
68
82
  onCheckedChange: () => toggleValue(value)
83
+ }), color && /*#__PURE__*/React.createElement("span", {
84
+ className: styles.colorDot,
85
+ style: {
86
+ backgroundColor: color
87
+ }
69
88
  }), /*#__PURE__*/React.createElement("span", {
70
89
  className: styles.valueText
71
90
  }, value)));
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxListInput.js","names":["classnames","React","memo","useCallback","useMemo","Checkbox","usePropertyAggregation","styles","sharedStyles","CheckboxListInputInner","objectType","propertyKey","selectedValues","onChange","whereClause","className","style","data","isLoading","error","where","values","map","item","value","selectedSet","Set","toggleValue","has","filter","v","createElement","checkboxList","errorMessage","message","length","emptyMessage","Fragment","loadingMessage","isSelected","key","checkboxRow","checkboxLabel","checked","onCheckedChange","valueText","CheckboxListInput"],"sources":["CheckboxListInput.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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport { usePropertyAggregation } from \"../../hooks/usePropertyAggregation.js\";\nimport styles from \"./CheckboxListInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\ninterface CheckboxListInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n selectedValues: string[];\n onChange: (selectedValues: string[]) => void;\n objectSet?: ObjectSet<Q>;\n whereClause?: WhereClause<Q>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction CheckboxListInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>({\n objectType,\n propertyKey,\n selectedValues,\n onChange,\n whereClause,\n className,\n style,\n}: CheckboxListInputProps<Q, K>): React.ReactElement {\n const { data, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n { where: whereClause },\n );\n\n const values = useMemo(\n () => data.map((item) => item.value),\n [data],\n );\n\n const selectedSet = useMemo(\n () => new Set(selectedValues),\n [selectedValues],\n );\n\n const toggleValue = useCallback(\n (value: string) => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter((v) => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n },\n [selectedValues, selectedSet, onChange],\n );\n\n return (\n <div\n className={classnames(styles.checkboxList, className)}\n style={style}\n data-loading={isLoading}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!error && values.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n {isLoading ? \"Loading values...\" : \"No values available\"}\n </div>\n )}\n\n {(values.length > 0 || isLoading) && (\n <>\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Updating...\n </div>\n )}\n {values.map((value) => {\n const isSelected = selectedSet.has(value);\n\n return (\n <div\n key={value}\n className={styles.checkboxRow}\n data-selected={isSelected}\n >\n <label className={styles.checkboxLabel}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleValue(value)}\n />\n <span className={styles.valueText}>\n {value}\n </span>\n </label>\n </div>\n );\n })}\n </>\n )}\n </div>\n );\n}\n\nexport const CheckboxListInput = memo(\n CheckboxListInputInner,\n) as typeof CheckboxListInputInner;\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAQA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,IAAIC,IAAI,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;AACzD,SAASC,QAAQ,QAAQ,+CAA+C;AACxE,SAASC,sBAAsB,QAAQ,uCAAuC;AAC9E,OAAOC,MAAM,MAAM,gCAAgC;AACnD,OAAOC,YAAY,MAAM,qBAAqB;AAgB9C,SAASC,sBAAsBA,CAG7B;EACAC,UAAU;EACVC,WAAW;EACXC,cAAc;EACdC,QAAQ;EACRC,WAAW;EACXC,SAAS;EACTC;AAC4B,CAAC,EAAsB;EACnD,MAAM;IAAEC,IAAI;IAAEC,SAAS;IAAEC;EAAM,CAAC,GAAGb,sBAAsB,CACvDI,UAAU,EACVC,WAAW,EACX;IAAES,KAAK,EAAEN;EAAY,CACvB,CAAC;EAED,MAAMO,MAAM,GAAGjB,OAAO,CACpB,MAAMa,IAAI,CAACK,GAAG,CAAEC,IAAI,IAAKA,IAAI,CAACC,KAAK,CAAC,EACpC,CAACP,IAAI,CACP,CAAC;EAED,MAAMQ,WAAW,GAAGrB,OAAO,CACzB,MAAM,IAAIsB,GAAG,CAACd,cAAc,CAAC,EAC7B,CAACA,cAAc,CACjB,CAAC;EAED,MAAMe,WAAW,GAAGxB,WAAW,CAC5BqB,KAAa,IAAK;IACjB,IAAIC,WAAW,CAACG,GAAG,CAACJ,KAAK,CAAC,EAAE;MAC1BX,QAAQ,CAACD,cAAc,CAACiB,MAAM,CAAEC,CAAC,IAAKA,CAAC,KAAKN,KAAK,CAAC,CAAC;IACrD,CAAC,MAAM;MACLX,QAAQ,CAAC,CAAC,GAAGD,cAAc,EAAEY,KAAK,CAAC,CAAC;IACtC;EACF,CAAC,EACD,CAACZ,cAAc,EAAEa,WAAW,EAAEZ,QAAQ,CACxC,CAAC;EAED,oBACEZ,KAAA,CAAA8B,aAAA;IACEhB,SAAS,EAAEf,UAAU,CAACO,MAAM,CAACyB,YAAY,EAAEjB,SAAS,CAAE;IACtDC,KAAK,EAAEA,KAAM;IACb,gBAAcE;EAAU,GAEvBC,KAAK,iBACJlB,KAAA,CAAA8B,aAAA;IAAKhB,SAAS,EAAEP,YAAY,CAACyB;EAAa,GAAC,wBACnB,EAACd,KAAK,CAACe,OAC1B,CACN,EAEA,CAACf,KAAK,IAAIE,MAAM,CAACc,MAAM,KAAK,CAAC,iBAC5BlC,KAAA,CAAA8B,aAAA;IAAKhB,SAAS,EAAEP,YAAY,CAAC4B;EAAa,GACvClB,SAAS,GAAG,mBAAmB,GAAG,qBAChC,CACN,EAEA,CAACG,MAAM,CAACc,MAAM,GAAG,CAAC,IAAIjB,SAAS,kBAC9BjB,KAAA,CAAA8B,aAAA,CAAA9B,KAAA,CAAAoC,QAAA,QACGnB,SAAS,iBACRjB,KAAA,CAAA8B,aAAA;IAAKhB,SAAS,EAAEP,YAAY,CAAC8B;EAAe,GAAC,aAExC,CACN,EACAjB,MAAM,CAACC,GAAG,CAAEE,KAAK,IAAK;IACrB,MAAMe,UAAU,GAAGd,WAAW,CAACG,GAAG,CAACJ,KAAK,CAAC;IAEzC,oBACEvB,KAAA,CAAA8B,aAAA;MACES,GAAG,EAAEhB,KAAM;MACXT,SAAS,EAAER,MAAM,CAACkC,WAAY;MAC9B,iBAAeF;IAAW,gBAE1BtC,KAAA,CAAA8B,aAAA;MAAOhB,SAAS,EAAER,MAAM,CAACmC;IAAc,gBACrCzC,KAAA,CAAA8B,aAAA,CAAC1B,QAAQ;MACPsC,OAAO,EAAEJ,UAAW;MACpBK,eAAe,EAAEA,CAAA,KAAMjB,WAAW,CAACH,KAAK;IAAE,CAC3C,CAAC,eACFvB,KAAA,CAAA8B,aAAA;MAAMhB,SAAS,EAAER,MAAM,CAACsC;IAAU,GAC/BrB,KACG,CACD,CACJ,CAAC;EAEV,CAAC,CACD,CAED,CAAC;AAEV;AAEA,OAAO,MAAMsB,iBAAiB,gBAAG5C,IAAI,CACnCO,sBACF,CAAkC","ignoreList":[]}
1
+ {"version":3,"file":"CheckboxListInput.js","names":["classnames","React","memo","useCallback","useMemo","Checkbox","styles","sharedStyles","CheckboxListInputInner","values","isLoading","error","selectedValues","onChange","colorMap","className","style","displayValues","map","item","value","selectedSet","Set","toggleValue","has","filter","v","allSelected","length","every","areSomeValuesSelected","some","handleSelectAll","createElement","checkboxList","errorMessage","message","emptyMessage","Fragment","loadingMessage","checkboxRow","checkboxLabel","checked","indeterminate","onCheckedChange","valueText","isSelected","color","key","colorDot","backgroundColor","CheckboxListInput"],"sources":["CheckboxListInput.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 classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo } from \"react\";\nimport { Checkbox } from \"../../../base-components/checkbox/Checkbox.js\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport styles from \"./CheckboxListInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\ninterface CheckboxListInputProps {\n values: PropertyAggregationValue[];\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (selectedValues: string[]) => void;\n colorMap?: Record<string, string>;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction CheckboxListInputInner({\n values,\n isLoading,\n error,\n selectedValues,\n onChange,\n colorMap,\n className,\n style,\n}: CheckboxListInputProps): React.ReactElement {\n const displayValues = useMemo(\n () => values.map((item) => item.value),\n [values],\n );\n\n const selectedSet = useMemo(\n () => new Set(selectedValues),\n [selectedValues],\n );\n\n const toggleValue = useCallback(\n (value: string) => {\n if (selectedSet.has(value)) {\n onChange(selectedValues.filter((v) => v !== value));\n } else {\n onChange([...selectedValues, value]);\n }\n },\n [selectedValues, selectedSet, onChange],\n );\n\n const allSelected = useMemo(\n () =>\n displayValues.length > 0\n && displayValues.every((v) => selectedSet.has(v)),\n [displayValues, selectedSet],\n );\n const areSomeValuesSelected = useMemo(\n () => !allSelected && selectedValues.some((v) => selectedSet.has(v)),\n [allSelected, selectedValues, selectedSet],\n );\n\n const handleSelectAll = useCallback(\n () => {\n if (allSelected) {\n onChange([]);\n } else {\n onChange([...displayValues]);\n }\n },\n [allSelected, displayValues, onChange],\n );\n\n return (\n <div\n className={classnames(styles.checkboxList, className)}\n style={style}\n data-loading={isLoading}\n >\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!error && displayValues.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n {isLoading ? \"Loading values...\" : \"No values available\"}\n </div>\n )}\n\n {(displayValues.length > 0 || isLoading) && (\n <>\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Updating...\n </div>\n )}\n <div\n className={styles.checkboxRow}\n data-select-all\n >\n <label className={styles.checkboxLabel}>\n <Checkbox\n checked={allSelected}\n indeterminate={areSomeValuesSelected}\n onCheckedChange={handleSelectAll}\n />\n <span className={styles.valueText}>Select all</span>\n </label>\n </div>\n {displayValues.map((value) => {\n const isSelected = selectedSet.has(value);\n const color = colorMap?.[value];\n\n return (\n <div\n key={value}\n className={styles.checkboxRow}\n data-selected={isSelected}\n >\n <label className={styles.checkboxLabel}>\n <Checkbox\n checked={isSelected}\n onCheckedChange={() => toggleValue(value)}\n />\n {color && (\n <span\n className={styles.colorDot}\n style={{ backgroundColor: color }}\n />\n )}\n <span className={styles.valueText}>\n {value}\n </span>\n </label>\n </div>\n );\n })}\n </>\n )}\n </div>\n );\n}\n\nexport const CheckboxListInput = memo(\n CheckboxListInputInner,\n) as typeof CheckboxListInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -24,6 +24,12 @@
24
24
  padding: var(--osdk-filter-checkbox-row-padding);
25
25
  }
26
26
 
27
+ .checkboxRow[data-select-all] {
28
+ border-bottom: var(--osdk-filter-checkbox-selectall-border-bottom);
29
+ padding-bottom: calc(var(--osdk-filter-checkbox-row-padding) + 2px);
30
+ margin-bottom: 2px;
31
+ }
32
+
27
33
  .checkboxLabel {
28
34
  display: flex;
29
35
  align-items: center;
@@ -40,3 +46,10 @@
40
46
  text-overflow: ellipsis;
41
47
  white-space: nowrap;
42
48
  }
49
+
50
+ .colorDot {
51
+ width: var(--osdk-filter-checkbox-color-dot-size);
52
+ height: var(--osdk-filter-checkbox-color-dot-size);
53
+ border-radius: 50%;
54
+ flex-shrink: 0;
55
+ }
@@ -3,7 +3,8 @@ const styles = {
3
3
  "checkboxList": "CheckboxListInput-module__checkboxList___NTBTd7DH",
4
4
  "checkboxRow": "CheckboxListInput-module__checkboxRow___ga-mvL9m",
5
5
  "checkboxLabel": "CheckboxListInput-module__checkboxLabel___iFH7C6-U",
6
- "valueText": "CheckboxListInput-module__valueText___ohfVO74D"
6
+ "valueText": "CheckboxListInput-module__valueText___ohfVO74D",
7
+ "colorDot": "CheckboxListInput-module__colorDot___AdQXW5K-"
7
8
  };
8
9
 
9
10
  export default styles;
@@ -1 +1 @@
1
- {"version":3,"file":"DateRangeInput.js","names":["React","memo","formatDateForInput","parseDateFromInput","RangeInput","dateConfig","inputType","formatValue","parseValue","toNumber","d","getTime","fromNumber","t","Date","minLabel","maxLabel","formatTooltip","min","max","count","toLocaleString","DateRangeInputInner","props","createElement","_extends","config","DateRangeInput"],"sources":["DateRangeInput.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, PropertyKeys } from \"@osdk/api\";\nimport React, { memo } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"./dateUtils.js\";\nimport { RangeInput, type RangeInputConfig } from \"./RangeInput.js\";\n\nconst dateConfig: RangeInputConfig<Date> = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: parseDateFromInput,\n toNumber: (d) => d.getTime(),\n fromNumber: (t) => new Date(t),\n minLabel: \"From\",\n maxLabel: \"To\",\n formatTooltip: (min, max, count) =>\n `${formatDateForInput(min)} - ${\n formatDateForInput(max)\n }: ${count.toLocaleString()}`,\n};\n\ninterface DateRangeInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n minValue: Date | undefined;\n maxValue: Date | undefined;\n onChange: (min: Date | undefined, max: Date | undefined) => void;\n objectSet?: ObjectSet<Q>;\n showHistogram?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction DateRangeInputInner<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n>(props: DateRangeInputProps<Q, K>): React.ReactElement {\n return <RangeInput {...props} config={dateConfig} />;\n}\n\nexport const DateRangeInput = memo(\n DateRangeInputInner,\n) as typeof DateRangeInputInner;\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,gBAAgB;AACvE,SAASC,UAAU,QAA+B,iBAAiB;AAEnE,MAAMC,UAAkC,GAAG;EACzCC,SAAS,EAAE,MAAM;EACjBC,WAAW,EAAEL,kBAAkB;EAC/BM,UAAU,EAAEL,kBAAkB;EAC9BM,QAAQ,EAAGC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,CAAC;EAC5BC,UAAU,EAAGC,CAAC,IAAK,IAAIC,IAAI,CAACD,CAAC,CAAC;EAC9BE,QAAQ,EAAE,MAAM;EAChBC,QAAQ,EAAE,IAAI;EACdC,aAAa,EAAEA,CAACC,GAAG,EAAEC,GAAG,EAAEC,KAAK,KAC7B,GAAGlB,kBAAkB,CAACgB,GAAG,CAAC,MACxBhB,kBAAkB,CAACiB,GAAG,CAAC,KACpBC,KAAK,CAACC,cAAc,CAAC,CAAC;AAC/B,CAAC;AAiBD,SAASC,mBAAmBA,CAG1BC,KAAgC,EAAsB;EACtD,oBAAOvB,KAAA,CAAAwB,aAAA,CAACpB,UAAU,EAAAqB,QAAA,KAAKF,KAAK;IAAEG,MAAM,EAAErB;EAAW,EAAE,CAAC;AACtD;AAEA,OAAO,MAAMsB,cAAc,gBAAG1B,IAAI,CAChCqB,mBACF,CAA+B","ignoreList":[]}
1
+ {"version":3,"file":"DateRangeInput.js","names":["React","memo","formatDateForInput","parseDateFromInput","RangeInput","dateConfig","inputType","formatValue","parseValue","toNumber","d","getTime","fromNumber","t","Date","minLabel","maxLabel","formatTooltip","min","max","count","toLocaleString","DateRangeInputInner","props","createElement","_extends","config","DateRangeInput"],"sources":["DateRangeInput.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 React, { memo } from \"react\";\nimport { formatDateForInput, parseDateFromInput } from \"./dateUtils.js\";\nimport { RangeInput, type RangeInputConfig } from \"./RangeInput.js\";\n\nconst dateConfig: RangeInputConfig<Date> = {\n inputType: \"date\",\n formatValue: formatDateForInput,\n parseValue: parseDateFromInput,\n toNumber: (d) => d.getTime(),\n fromNumber: (t) => new Date(t),\n minLabel: \"From\",\n maxLabel: \"To\",\n formatTooltip: (min, max, count) =>\n `${formatDateForInput(min)} - ${\n formatDateForInput(max)\n }: ${count.toLocaleString()}`,\n};\n\ninterface DateRangeInputProps {\n valueCountPairs: Array<{ value: Date; count: number }>;\n isLoading: boolean;\n minValue: Date | undefined;\n maxValue: Date | undefined;\n onChange: (min: Date | undefined, max: Date | undefined) => void;\n showHistogram?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\nfunction DateRangeInputInner(\n props: DateRangeInputProps,\n): React.ReactElement {\n return <RangeInput {...props} config={dateConfig} />;\n}\n\nexport const DateRangeInput = memo(\n DateRangeInputInner,\n) as typeof DateRangeInputInner;\n"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,IAAIC,IAAI,QAAQ,OAAO;AACnC,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,gBAAgB;AACvE,SAASC,UAAU,QAA+B,iBAAiB;AAEnE,MAAMC,UAAkC,GAAG;EACzCC,SAAS,EAAE,MAAM;EACjBC,WAAW,EAAEL,kBAAkB;EAC/BM,UAAU,EAAEL,kBAAkB;EAC9BM,QAAQ,EAAGC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,CAAC;EAC5BC,UAAU,EAAGC,CAAC,IAAK,IAAIC,IAAI,CAACD,CAAC,CAAC;EAC9BE,QAAQ,EAAE,MAAM;EAChBC,QAAQ,EAAE,IAAI;EACdC,aAAa,EAAEA,CAACC,GAAG,EAAEC,GAAG,EAAEC,KAAK,KAC7B,GAAGlB,kBAAkB,CAACgB,GAAG,CAAC,MACxBhB,kBAAkB,CAACiB,GAAG,CAAC,KACpBC,KAAK,CAACC,cAAc,CAAC,CAAC;AAC/B,CAAC;AAaD,SAASC,mBAAmBA,CAC1BC,KAA0B,EACN;EACpB,oBAAOvB,KAAA,CAAAwB,aAAA,CAACpB,UAAU,EAAAqB,QAAA,KAAKF,KAAK;IAAEG,MAAM,EAAErB;EAAW,EAAE,CAAC;AACtD;AAEA,OAAO,MAAMsB,cAAc,gBAAG1B,IAAI,CAChCqB,mBACF,CAA+B","ignoreList":[]}