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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/build/browser/base-components/action-button/ActionButton.module.css +0 -4
  3. package/build/browser/base-components/checkbox/Checkbox.module.css +0 -4
  4. package/build/browser/base-components/dialog/Dialog.module.css +0 -8
  5. package/build/browser/base-components/draggable-list/DraggableList.js +4 -2
  6. package/build/browser/base-components/draggable-list/DraggableList.js.map +1 -1
  7. package/build/browser/base-components/draggable-list/DraggableList.module.css +0 -8
  8. package/build/browser/filter-list/FilterInput.js +132 -0
  9. package/build/browser/filter-list/FilterInput.js.map +1 -0
  10. package/build/browser/filter-list/FilterList.js +91 -0
  11. package/build/browser/filter-list/FilterList.js.map +1 -0
  12. package/build/browser/filter-list/FilterListApi.js.map +1 -1
  13. package/build/browser/filter-list/FilterListItemApi.js.map +1 -1
  14. package/build/browser/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  15. package/build/browser/filter-list/base/BaseFilterList.js.map +1 -0
  16. package/build/browser/filter-list/base/BaseFilterListApi.js +2 -0
  17. package/build/browser/filter-list/base/BaseFilterListApi.js.map +1 -0
  18. package/build/browser/filter-list/base/FilterIcons.js +63 -0
  19. package/build/browser/filter-list/base/FilterIcons.js.map +1 -0
  20. package/build/browser/filter-list/base/FilterList.module.css +22 -1
  21. package/build/browser/filter-list/base/FilterList.module.css.js +2 -0
  22. package/build/browser/filter-list/base/FilterListContent.js +21 -20
  23. package/build/browser/filter-list/base/FilterListContent.js.map +1 -1
  24. package/build/browser/filter-list/base/FilterListHeader.js +8 -3
  25. package/build/browser/filter-list/base/FilterListHeader.js.map +1 -1
  26. package/build/browser/filter-list/base/FilterListHeader.module.css +25 -1
  27. package/build/browser/filter-list/base/FilterListHeader.module.css.js +3 -0
  28. package/build/browser/filter-list/base/FilterListItem.js +36 -17
  29. package/build/browser/filter-list/base/FilterListItem.js.map +1 -1
  30. package/build/browser/filter-list/base/FilterListItem.module.css +58 -2
  31. package/build/browser/filter-list/base/FilterListItem.module.css.js +2 -0
  32. package/build/browser/filter-list/base/SortableFilterListItem.js +6 -6
  33. package/build/browser/filter-list/base/SortableFilterListItem.js.map +1 -1
  34. package/build/browser/filter-list/base/index.js +1 -2
  35. package/build/browser/filter-list/base/index.js.map +1 -1
  36. package/build/browser/filter-list/base/inputs/CheckboxListInput.js +34 -15
  37. package/build/browser/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  38. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  39. package/build/browser/filter-list/base/inputs/CheckboxListInput.module.css.js +2 -1
  40. package/build/browser/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  41. package/build/browser/filter-list/base/inputs/ListogramInput.js +17 -21
  42. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  43. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +25 -19
  44. package/build/browser/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  45. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +7 -14
  46. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  47. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  48. package/build/browser/filter-list/base/inputs/MultiSelectInput.module.css.js +1 -1
  49. package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -23
  50. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  51. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  52. package/build/browser/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  53. package/build/browser/filter-list/base/inputs/RangeInput.js +2 -32
  54. package/build/browser/filter-list/base/inputs/RangeInput.js.map +1 -1
  55. package/build/browser/filter-list/base/inputs/RangeInput.module.css +16 -14
  56. package/build/browser/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  57. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +6 -13
  58. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  59. package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -14
  60. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  61. package/build/browser/filter-list/base/inputs/TimelineInput.js +2 -2
  62. package/build/browser/filter-list/base/inputs/TimelineInput.js.map +1 -1
  63. package/build/browser/filter-list/base/inputs/TimelineInput.module.css +14 -12
  64. package/build/browser/filter-list/base/inputs/shared.module.css +5 -4
  65. package/build/browser/filter-list/hooks/useFilterListState.js +24 -3
  66. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  67. package/build/browser/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  68. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  69. package/build/browser/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  70. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  71. package/build/browser/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  72. package/build/browser/filter-list/inputs/DateRangeFilterInput.js +105 -0
  73. package/build/browser/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  74. package/build/browser/filter-list/inputs/LinkedPropertyInput.js +508 -0
  75. package/build/browser/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  76. package/build/browser/filter-list/inputs/ListogramFilterInput.js +62 -0
  77. package/build/browser/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  78. package/build/browser/filter-list/inputs/MultiDateFilterInput.js +38 -0
  79. package/build/browser/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  80. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  81. package/build/browser/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  82. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  83. package/build/browser/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  84. package/build/browser/filter-list/inputs/PropertyFilterInput.js +129 -0
  85. package/build/browser/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  86. package/build/browser/filter-list/inputs/SingleDateFilterInput.js +38 -0
  87. package/build/browser/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  88. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  89. package/build/browser/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  90. package/build/browser/filter-list/inputs/TextTagsFilterInput.js +54 -0
  91. package/build/browser/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  92. package/build/browser/filter-list/inputs/TimelineFilterInput.js +49 -0
  93. package/build/browser/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  94. package/build/browser/filter-list/inputs/ToggleFilterInput.js +36 -0
  95. package/build/browser/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  96. package/build/browser/filter-list/types/AggregationTypes.js +2 -0
  97. package/build/browser/filter-list/types/AggregationTypes.js.map +1 -0
  98. package/build/browser/filter-list/types/LinkedFilterTypes.js.map +1 -1
  99. package/build/browser/filter-list/types/index.js +0 -2
  100. package/build/browser/filter-list/types/index.js.map +1 -1
  101. package/build/browser/filter-list/utils/filterStateSerialization.js +42 -0
  102. package/build/browser/filter-list/utils/filterStateSerialization.js.map +1 -0
  103. package/build/browser/filter-list/utils/filterStateToWhereClause.js +19 -11
  104. package/build/browser/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  105. package/build/browser/filter-list/utils/filterValues.js +26 -0
  106. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  107. package/build/browser/object-table/ColumnConfigDialog.module.css +0 -9
  108. package/build/browser/object-table/MultiColumnSortDialog.module.css +0 -4
  109. package/build/browser/object-table/ObjectTable.js +2 -0
  110. package/build/browser/object-table/ObjectTable.js.map +1 -1
  111. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  112. package/build/browser/object-table/TableHeaderWithPopover.module.css +0 -12
  113. package/build/browser/object-table/hooks/useRowSelection.js +11 -8
  114. package/build/browser/object-table/hooks/useRowSelection.js.map +1 -1
  115. package/build/browser/public/experimental.js +4 -1
  116. package/build/browser/public/experimental.js.map +1 -1
  117. package/build/browser/shared/ErrorBoundary.module.css +14 -14
  118. package/build/browser/styles.css +207 -124
  119. package/build/cjs/public/experimental.cjs +3156 -2559
  120. package/build/cjs/public/experimental.cjs.map +1 -1
  121. package/build/cjs/public/experimental.css +591 -513
  122. package/build/cjs/public/experimental.css.map +1 -1
  123. package/build/cjs/public/experimental.d.cts +70 -4
  124. package/build/esm/base-components/action-button/ActionButton.module.css +0 -4
  125. package/build/esm/base-components/checkbox/Checkbox.module.css +0 -4
  126. package/build/esm/base-components/dialog/Dialog.module.css +0 -8
  127. package/build/esm/base-components/draggable-list/DraggableList.js +4 -2
  128. package/build/esm/base-components/draggable-list/DraggableList.js.map +1 -1
  129. package/build/esm/base-components/draggable-list/DraggableList.module.css +0 -8
  130. package/build/esm/filter-list/FilterInput.js +132 -0
  131. package/build/esm/filter-list/FilterInput.js.map +1 -0
  132. package/build/esm/filter-list/FilterList.js +91 -0
  133. package/build/esm/filter-list/FilterList.js.map +1 -0
  134. package/build/esm/filter-list/FilterListApi.js.map +1 -1
  135. package/build/esm/filter-list/FilterListItemApi.js.map +1 -1
  136. package/build/esm/filter-list/base/{FilterList.js → BaseFilterList.js} +30 -31
  137. package/build/esm/filter-list/base/BaseFilterList.js.map +1 -0
  138. package/build/esm/filter-list/base/BaseFilterListApi.js +2 -0
  139. package/build/esm/filter-list/base/BaseFilterListApi.js.map +1 -0
  140. package/build/esm/filter-list/base/FilterIcons.js +63 -0
  141. package/build/esm/filter-list/base/FilterIcons.js.map +1 -0
  142. package/build/esm/filter-list/base/FilterList.module.css +22 -1
  143. package/build/esm/filter-list/base/FilterListContent.js +21 -20
  144. package/build/esm/filter-list/base/FilterListContent.js.map +1 -1
  145. package/build/esm/filter-list/base/FilterListHeader.js +8 -3
  146. package/build/esm/filter-list/base/FilterListHeader.js.map +1 -1
  147. package/build/esm/filter-list/base/FilterListHeader.module.css +25 -1
  148. package/build/esm/filter-list/base/FilterListItem.js +36 -17
  149. package/build/esm/filter-list/base/FilterListItem.js.map +1 -1
  150. package/build/esm/filter-list/base/FilterListItem.module.css +58 -2
  151. package/build/esm/filter-list/base/SortableFilterListItem.js +6 -6
  152. package/build/esm/filter-list/base/SortableFilterListItem.js.map +1 -1
  153. package/build/esm/filter-list/base/index.js +1 -2
  154. package/build/esm/filter-list/base/index.js.map +1 -1
  155. package/build/esm/filter-list/base/inputs/CheckboxListInput.js +34 -15
  156. package/build/esm/filter-list/base/inputs/CheckboxListInput.js.map +1 -1
  157. package/build/esm/filter-list/base/inputs/CheckboxListInput.module.css +13 -0
  158. package/build/esm/filter-list/base/inputs/DateRangeInput.js.map +1 -1
  159. package/build/esm/filter-list/base/inputs/ListogramInput.js +17 -21
  160. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  161. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +25 -19
  162. package/build/esm/filter-list/base/inputs/MultiDateInput.module.css +6 -4
  163. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +7 -14
  164. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  165. package/build/esm/filter-list/base/inputs/MultiSelectInput.module.css +4 -1
  166. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -23
  167. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  168. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +3 -2
  169. package/build/esm/filter-list/base/inputs/NumberRangeInput.js.map +1 -1
  170. package/build/esm/filter-list/base/inputs/RangeInput.js +2 -32
  171. package/build/esm/filter-list/base/inputs/RangeInput.js.map +1 -1
  172. package/build/esm/filter-list/base/inputs/RangeInput.module.css +16 -14
  173. package/build/esm/filter-list/base/inputs/SingleDateInput.module.css +2 -1
  174. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +6 -13
  175. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  176. package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -14
  177. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  178. package/build/esm/filter-list/base/inputs/TimelineInput.js +2 -2
  179. package/build/esm/filter-list/base/inputs/TimelineInput.js.map +1 -1
  180. package/build/esm/filter-list/base/inputs/TimelineInput.module.css +14 -12
  181. package/build/esm/filter-list/base/inputs/shared.module.css +5 -4
  182. package/build/esm/filter-list/hooks/useFilterListState.js +24 -3
  183. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  184. package/build/esm/filter-list/hooks/usePropertyAggregation.js.map +1 -1
  185. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js +56 -0
  186. package/build/esm/filter-list/inputs/CheckboxListFilterInput.js.map +1 -0
  187. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js +38 -0
  188. package/build/esm/filter-list/inputs/ContainsTextFilterInput.js.map +1 -0
  189. package/build/esm/filter-list/inputs/DateRangeFilterInput.js +105 -0
  190. package/build/esm/filter-list/inputs/DateRangeFilterInput.js.map +1 -0
  191. package/build/esm/filter-list/inputs/LinkedPropertyInput.js +508 -0
  192. package/build/esm/filter-list/inputs/LinkedPropertyInput.js.map +1 -0
  193. package/build/esm/filter-list/inputs/ListogramFilterInput.js +62 -0
  194. package/build/esm/filter-list/inputs/ListogramFilterInput.js.map +1 -0
  195. package/build/esm/filter-list/inputs/MultiDateFilterInput.js +38 -0
  196. package/build/esm/filter-list/inputs/MultiDateFilterInput.js.map +1 -0
  197. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js +55 -0
  198. package/build/esm/filter-list/inputs/MultiSelectFilterInput.js.map +1 -0
  199. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js +105 -0
  200. package/build/esm/filter-list/inputs/NumberRangeFilterInput.js.map +1 -0
  201. package/build/esm/filter-list/inputs/PropertyFilterInput.js +129 -0
  202. package/build/esm/filter-list/inputs/PropertyFilterInput.js.map +1 -0
  203. package/build/esm/filter-list/inputs/SingleDateFilterInput.js +38 -0
  204. package/build/esm/filter-list/inputs/SingleDateFilterInput.js.map +1 -0
  205. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js +55 -0
  206. package/build/esm/filter-list/inputs/SingleSelectFilterInput.js.map +1 -0
  207. package/build/esm/filter-list/inputs/TextTagsFilterInput.js +54 -0
  208. package/build/esm/filter-list/inputs/TextTagsFilterInput.js.map +1 -0
  209. package/build/esm/filter-list/inputs/TimelineFilterInput.js +49 -0
  210. package/build/esm/filter-list/inputs/TimelineFilterInput.js.map +1 -0
  211. package/build/esm/filter-list/inputs/ToggleFilterInput.js +36 -0
  212. package/build/esm/filter-list/inputs/ToggleFilterInput.js.map +1 -0
  213. package/build/esm/filter-list/types/AggregationTypes.js +2 -0
  214. package/build/esm/filter-list/types/AggregationTypes.js.map +1 -0
  215. package/build/esm/filter-list/types/LinkedFilterTypes.js.map +1 -1
  216. package/build/esm/filter-list/types/index.js +0 -2
  217. package/build/esm/filter-list/types/index.js.map +1 -1
  218. package/build/esm/filter-list/utils/filterStateSerialization.js +42 -0
  219. package/build/esm/filter-list/utils/filterStateSerialization.js.map +1 -0
  220. package/build/esm/filter-list/utils/filterStateToWhereClause.js +19 -11
  221. package/build/esm/filter-list/utils/filterStateToWhereClause.js.map +1 -1
  222. package/build/esm/filter-list/utils/filterValues.js +26 -0
  223. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  224. package/build/esm/object-table/ColumnConfigDialog.module.css +0 -9
  225. package/build/esm/object-table/MultiColumnSortDialog.module.css +0 -4
  226. package/build/esm/object-table/ObjectTable.js +2 -0
  227. package/build/esm/object-table/ObjectTable.js.map +1 -1
  228. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  229. package/build/esm/object-table/TableHeaderWithPopover.module.css +0 -12
  230. package/build/esm/object-table/hooks/useRowSelection.js +11 -8
  231. package/build/esm/object-table/hooks/useRowSelection.js.map +1 -1
  232. package/build/esm/public/experimental.js +4 -1
  233. package/build/esm/public/experimental.js.map +1 -1
  234. package/build/esm/shared/ErrorBoundary.module.css +14 -14
  235. package/build/types/filter-list/{base/FilterInput.d.ts → FilterInput.d.ts} +2 -2
  236. package/build/types/filter-list/FilterInput.d.ts.map +1 -0
  237. package/build/types/filter-list/{base/FilterList.d.ts → FilterList.d.ts} +1 -1
  238. package/build/types/filter-list/FilterList.d.ts.map +1 -0
  239. package/build/types/filter-list/FilterListApi.d.ts +14 -0
  240. package/build/types/filter-list/FilterListApi.d.ts.map +1 -1
  241. package/build/types/filter-list/FilterListItemApi.d.ts +13 -0
  242. package/build/types/filter-list/FilterListItemApi.d.ts.map +1 -1
  243. package/build/types/filter-list/base/BaseFilterList.d.ts +3 -0
  244. package/build/types/filter-list/base/BaseFilterList.d.ts.map +1 -0
  245. package/build/types/filter-list/base/BaseFilterListApi.d.ts +29 -0
  246. package/build/types/filter-list/base/BaseFilterListApi.d.ts.map +1 -0
  247. package/build/types/filter-list/base/FilterIcons.d.ts +4 -0
  248. package/build/types/filter-list/base/FilterIcons.d.ts.map +1 -0
  249. package/build/types/filter-list/base/FilterListContent.d.ts +8 -8
  250. package/build/types/filter-list/base/FilterListContent.d.ts.map +1 -1
  251. package/build/types/filter-list/base/FilterListHeader.d.ts.map +1 -1
  252. package/build/types/filter-list/base/FilterListItem.d.ts +7 -8
  253. package/build/types/filter-list/base/FilterListItem.d.ts.map +1 -1
  254. package/build/types/filter-list/base/SortableFilterListItem.d.ts +7 -8
  255. package/build/types/filter-list/base/SortableFilterListItem.d.ts.map +1 -1
  256. package/build/types/filter-list/base/index.d.ts +2 -2
  257. package/build/types/filter-list/base/index.d.ts.map +1 -1
  258. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts +7 -13
  259. package/build/types/filter-list/base/inputs/CheckboxListInput.d.ts.map +1 -1
  260. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts +7 -12
  261. package/build/types/filter-list/base/inputs/DateRangeInput.d.ts.map +1 -1
  262. package/build/types/filter-list/base/inputs/ListogramInput.d.ts +10 -13
  263. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  264. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts +7 -13
  265. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  266. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts +5 -11
  267. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
  268. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts +7 -12
  269. package/build/types/filter-list/base/inputs/NumberRangeInput.d.ts.map +1 -1
  270. package/build/types/filter-list/base/inputs/RangeInput.d.ts +7 -14
  271. package/build/types/filter-list/base/inputs/RangeInput.d.ts.map +1 -1
  272. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts +7 -13
  273. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  274. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts +7 -13
  275. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
  276. package/build/types/filter-list/hooks/useFilterListState.d.ts +1 -0
  277. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  278. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts +2 -5
  279. package/build/types/filter-list/hooks/usePropertyAggregation.d.ts.map +1 -1
  280. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts +14 -0
  281. package/build/types/filter-list/inputs/CheckboxListFilterInput.d.ts.map +1 -0
  282. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts +10 -0
  283. package/build/types/filter-list/inputs/ContainsTextFilterInput.d.ts.map +1 -0
  284. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts +12 -0
  285. package/build/types/filter-list/inputs/DateRangeFilterInput.d.ts.map +1 -0
  286. package/build/types/filter-list/{base/inputs → inputs}/LinkedPropertyInput.d.ts +2 -2
  287. package/build/types/filter-list/inputs/LinkedPropertyInput.d.ts.map +1 -0
  288. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts +16 -0
  289. package/build/types/filter-list/inputs/ListogramFilterInput.d.ts.map +1 -0
  290. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts +9 -0
  291. package/build/types/filter-list/inputs/MultiDateFilterInput.d.ts.map +1 -0
  292. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts +13 -0
  293. package/build/types/filter-list/inputs/MultiSelectFilterInput.d.ts.map +1 -0
  294. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts +12 -0
  295. package/build/types/filter-list/inputs/NumberRangeFilterInput.d.ts.map +1 -0
  296. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts +17 -0
  297. package/build/types/filter-list/inputs/PropertyFilterInput.d.ts.map +1 -0
  298. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts +9 -0
  299. package/build/types/filter-list/inputs/SingleDateFilterInput.d.ts.map +1 -0
  300. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts +13 -0
  301. package/build/types/filter-list/inputs/SingleSelectFilterInput.d.ts.map +1 -0
  302. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts +13 -0
  303. package/build/types/filter-list/inputs/TextTagsFilterInput.d.ts.map +1 -0
  304. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts +9 -0
  305. package/build/types/filter-list/inputs/TimelineFilterInput.d.ts.map +1 -0
  306. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts +9 -0
  307. package/build/types/filter-list/inputs/ToggleFilterInput.d.ts.map +1 -0
  308. package/build/types/filter-list/types/AggregationTypes.d.ts +5 -0
  309. package/build/types/filter-list/types/AggregationTypes.d.ts.map +1 -0
  310. package/build/types/filter-list/types/LinkedFilterTypes.d.ts +0 -19
  311. package/build/types/filter-list/types/LinkedFilterTypes.d.ts.map +1 -1
  312. package/build/types/filter-list/types/index.d.ts +0 -2
  313. package/build/types/filter-list/types/index.d.ts.map +1 -1
  314. package/build/types/filter-list/utils/filterStateSerialization.d.ts +3 -0
  315. package/build/types/filter-list/utils/filterStateSerialization.d.ts.map +1 -0
  316. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts +1 -1
  317. package/build/types/filter-list/utils/filterStateToWhereClause.d.ts.map +1 -1
  318. package/build/types/filter-list/utils/filterValues.d.ts +2 -0
  319. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  320. package/build/types/object-table/ObjectTable.d.ts +1 -1
  321. package/build/types/object-table/ObjectTable.d.ts.map +1 -1
  322. package/build/types/object-table/ObjectTableApi.d.ts +7 -1
  323. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  324. package/build/types/object-table/hooks/useRowSelection.d.ts +3 -2
  325. package/build/types/object-table/hooks/useRowSelection.d.ts.map +1 -1
  326. package/build/types/public/experimental.d.ts +4 -1
  327. package/build/types/public/experimental.d.ts.map +1 -1
  328. package/package.json +4 -4
  329. package/build/browser/filter-list/base/FilterInput.js +0 -542
  330. package/build/browser/filter-list/base/FilterInput.js.map +0 -1
  331. package/build/browser/filter-list/base/FilterList.js.map +0 -1
  332. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  333. package/build/browser/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  334. package/build/browser/filter-list/types/AddFilterMenuTypes.js +0 -2
  335. package/build/browser/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  336. package/build/browser/filter-list/types/FilterPanelTypes.js +0 -2
  337. package/build/browser/filter-list/types/FilterPanelTypes.js.map +0 -1
  338. package/build/esm/filter-list/base/FilterInput.js +0 -542
  339. package/build/esm/filter-list/base/FilterInput.js.map +0 -1
  340. package/build/esm/filter-list/base/FilterList.js.map +0 -1
  341. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js +0 -237
  342. package/build/esm/filter-list/base/inputs/LinkedPropertyInput.js.map +0 -1
  343. package/build/esm/filter-list/types/AddFilterMenuTypes.js +0 -2
  344. package/build/esm/filter-list/types/AddFilterMenuTypes.js.map +0 -1
  345. package/build/esm/filter-list/types/FilterPanelTypes.js +0 -2
  346. package/build/esm/filter-list/types/FilterPanelTypes.js.map +0 -1
  347. package/build/types/filter-list/base/FilterInput.d.ts.map +0 -1
  348. package/build/types/filter-list/base/FilterList.d.ts.map +0 -1
  349. package/build/types/filter-list/base/inputs/LinkedPropertyInput.d.ts.map +0 -1
  350. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts +0 -56
  351. package/build/types/filter-list/types/AddFilterMenuTypes.d.ts.map +0 -1
  352. package/build/types/filter-list/types/FilterPanelTypes.d.ts +0 -18
  353. package/build/types/filter-list/types/FilterPanelTypes.d.ts.map +0 -1
@@ -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
  }
@@ -22,13 +22,13 @@ import { FilterListItem } from "./FilterListItem.js";
22
22
  import styles from "./FilterListItem.module.css";
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";
22
21
  import sharedStyles from "./shared.module.css";
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":"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","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
+ }
@@ -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":[]}
@@ -17,28 +17,22 @@
17
17
  import { Button } from "@base-ui/react/button";
18
18
  import classnames from "classnames";
19
19
  import React, { memo, useCallback, useMemo, useState } from "react";
20
- import { usePropertyAggregation } from "../../hooks/usePropertyAggregation.js";
21
20
  import styles from "./ListogramInput.module.css";
22
21
  import sharedStyles from "./shared.module.css";
23
22
  function ListogramInputInner({
24
- objectType,
25
- propertyKey,
23
+ values,
24
+ maxCount,
25
+ isLoading,
26
+ error,
26
27
  selectedValues,
27
28
  onChange,
28
- whereClause,
29
+ colorMap,
30
+ displayMode = "full",
29
31
  className,
30
32
  style,
31
33
  maxVisibleItems
32
34
  }) {
33
35
  const [isExpanded, setIsExpanded] = useState(false);
34
- const {
35
- data: values,
36
- maxCount,
37
- isLoading,
38
- error
39
- } = usePropertyAggregation(objectType, propertyKey, {
40
- where: whereClause
41
- });
42
36
  const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);
43
37
  const toggleValue = useCallback(value => {
44
38
  if (selectedSet.has(value)) {
@@ -68,24 +62,26 @@ function ListogramInputInner({
68
62
  value,
69
63
  count
70
64
  }) => {
71
- const isSelected = selectedSet.has(value);
72
65
  const percentage = maxCount > 0 ? count / maxCount * 100 : 0;
66
+ const perRowColor = colorMap?.[value];
73
67
  return /*#__PURE__*/React.createElement(Button, {
74
68
  key: value,
75
- type: "button",
76
69
  className: styles.row,
77
70
  onClick: () => toggleValue(value),
78
- "aria-pressed": isSelected
71
+ "aria-pressed": selectedSet.has(value),
72
+ style: perRowColor || percentage > 0 ? {
73
+ "--osdk-filter-listogram-bar-fill-scale": percentage / 100,
74
+ ...(perRowColor ? {
75
+ "--osdk-filter-listogram-row-bar-color": perRowColor
76
+ } : undefined)
77
+ } : undefined
79
78
  }, /*#__PURE__*/React.createElement("span", {
80
79
  className: styles.label
81
- }, value), /*#__PURE__*/React.createElement("span", {
80
+ }, value), displayMode === "full" && /*#__PURE__*/React.createElement("span", {
82
81
  className: styles.bar
83
82
  }, /*#__PURE__*/React.createElement("span", {
84
- className: styles.barFill,
85
- style: {
86
- width: `${percentage}%`
87
- }
88
- })), /*#__PURE__*/React.createElement("span", {
83
+ className: styles.barFill
84
+ })), displayMode !== "minimal" && /*#__PURE__*/React.createElement("span", {
89
85
  className: styles.count
90
86
  }, count.toLocaleString()));
91
87
  }), hasMore && !isExpanded && /*#__PURE__*/React.createElement(Button, {
@@ -1 +1 @@
1
- {"version":3,"file":"ListogramInput.js","names":["Button","classnames","React","memo","useCallback","useMemo","useState","usePropertyAggregation","styles","sharedStyles","ListogramInputInner","objectType","propertyKey","selectedValues","onChange","whereClause","className","style","maxVisibleItems","isExpanded","setIsExpanded","data","values","maxCount","isLoading","error","where","selectedSet","Set","toggleValue","value","has","filter","v","displayValues","slice","hasMore","length","createElement","listogram","loadingMessage","errorMessage","message","emptyMessage","container","map","count","isSelected","percentage","key","type","row","onClick","label","bar","barFill","width","toLocaleString","ListogramInput"],"sources":["ListogramInput.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 ObjectSet,\n ObjectTypeDefinition,\n PropertyKeys,\n WhereClause,\n} from \"@osdk/api\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { usePropertyAggregation } from \"../../hooks/usePropertyAggregation.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\ninterface ListogramInputProps<\n Q extends ObjectTypeDefinition,\n K extends PropertyKeys<Q>,\n> {\n objectType: Q;\n propertyKey: K;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n objectSet?: ObjectSet<Q>;\n whereClause?: WhereClause<Q>;\n className?: string;\n style?: React.CSSProperties;\n maxVisibleItems?: number;\n}\n\nfunction ListogramInputInner<\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 maxVisibleItems,\n}: ListogramInputProps<Q, K>): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const { data: values, maxCount, isLoading, error } = usePropertyAggregation(\n objectType,\n propertyKey,\n { where: whereClause },\n );\n\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\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 displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return values;\n return values.slice(0, maxVisibleItems);\n }, [values, maxVisibleItems, isExpanded]);\n\n const hasMore = maxVisibleItems != null && values.length > maxVisibleItems;\n\n return (\n <div\n className={classnames(styles.listogram, className)}\n style={style}\n data-loading={isLoading}\n >\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Loading values...\n </div>\n )}\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!isLoading && !error && values.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n No values available\n </div>\n )}\n\n {(values.length > 0 || isLoading) && (\n <div className={styles.container}>\n {displayValues.map(({ value, count }) => {\n const isSelected = selectedSet.has(value);\n const percentage = maxCount > 0 ? (count / maxCount) * 100 : 0;\n\n return (\n <Button\n key={value}\n type=\"button\"\n className={styles.row}\n onClick={() => toggleValue(value)}\n aria-pressed={isSelected}\n >\n <span className={styles.label}>{value}</span>\n <span className={styles.bar}>\n <span\n className={styles.barFill}\n style={{ width: `${percentage}%` }}\n />\n </span>\n <span className={styles.count}>\n {count.toLocaleString()}\n </span>\n </Button>\n );\n })}\n\n {hasMore && !isExpanded && (\n <Button\n type=\"button\"\n className={styles.row}\n onClick={() => setIsExpanded(true)}\n >\n View all ({values.length})\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport const ListogramInput = memo(\n ListogramInputInner,\n) as typeof ListogramInputInner;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListogramInput.js","names":["Button","classnames","React","memo","useCallback","useMemo","useState","styles","sharedStyles","ListogramInputInner","values","maxCount","isLoading","error","selectedValues","onChange","colorMap","displayMode","className","style","maxVisibleItems","isExpanded","setIsExpanded","selectedSet","Set","toggleValue","value","has","filter","v","displayValues","slice","hasMore","length","createElement","listogram","loadingMessage","errorMessage","message","emptyMessage","container","map","count","percentage","perRowColor","key","row","onClick","undefined","label","bar","barFill","toLocaleString","type","ListogramInput"],"sources":["ListogramInput.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, useCallback, useMemo, useState } from \"react\";\nimport type { PropertyAggregationValue } from \"../../types/AggregationTypes.js\";\nimport styles from \"./ListogramInput.module.css\";\nimport sharedStyles from \"./shared.module.css\";\n\nexport type ListogramDisplayMode = \"full\" | \"count\" | \"minimal\";\n\ninterface ListogramInputProps {\n values: PropertyAggregationValue[];\n maxCount: number;\n isLoading: boolean;\n error: Error | null;\n selectedValues: string[];\n onChange: (values: string[]) => void;\n colorMap?: Record<string, string>;\n displayMode?: ListogramDisplayMode;\n className?: string;\n style?: React.CSSProperties;\n maxVisibleItems?: number;\n}\n\nfunction ListogramInputInner({\n values,\n maxCount,\n isLoading,\n error,\n selectedValues,\n onChange,\n colorMap,\n displayMode = \"full\",\n className,\n style,\n maxVisibleItems,\n}: ListogramInputProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const selectedSet = useMemo(() => new Set(selectedValues), [selectedValues]);\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 displayValues = useMemo(() => {\n if (isExpanded || !maxVisibleItems) return values;\n return values.slice(0, maxVisibleItems);\n }, [values, maxVisibleItems, isExpanded]);\n\n const hasMore = maxVisibleItems != null && values.length > maxVisibleItems;\n\n return (\n <div\n className={classnames(styles.listogram, className)}\n style={style}\n data-loading={isLoading}\n >\n {isLoading && (\n <div className={sharedStyles.loadingMessage}>\n Loading values...\n </div>\n )}\n\n {error && (\n <div className={sharedStyles.errorMessage}>\n Error loading values: {error.message}\n </div>\n )}\n\n {!isLoading && !error && values.length === 0 && (\n <div className={sharedStyles.emptyMessage}>\n No values available\n </div>\n )}\n\n {(values.length > 0 || isLoading) && (\n <div className={styles.container}>\n {displayValues.map(({ value, count }) => {\n const percentage = maxCount > 0 ? (count / maxCount) * 100 : 0;\n const perRowColor = colorMap?.[value];\n\n return (\n <Button\n key={value}\n className={styles.row}\n onClick={() => toggleValue(value)}\n aria-pressed={selectedSet.has(value)}\n style={perRowColor || percentage > 0\n ? {\n \"--osdk-filter-listogram-bar-fill-scale\": percentage / 100,\n ...(perRowColor\n ? {\n \"--osdk-filter-listogram-row-bar-color\": perRowColor,\n }\n : undefined),\n } as React.CSSProperties\n : undefined}\n >\n <span className={styles.label}>{value}</span>\n {displayMode === \"full\" && (\n <span className={styles.bar}>\n <span className={styles.barFill} />\n </span>\n )}\n {displayMode !== \"minimal\" && (\n <span className={styles.count}>\n {count.toLocaleString()}\n </span>\n )}\n </Button>\n );\n })}\n\n {hasMore && !isExpanded && (\n <Button\n type=\"button\"\n className={styles.row}\n onClick={() => setIsExpanded(true)}\n >\n View all ({values.length})\n </Button>\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport const ListogramInput = memo(\n ListogramInputInner,\n) as typeof ListogramInputInner;\n"],"mappings":"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","ignoreList":[]}
@@ -22,40 +22,41 @@
22
22
  .container {
23
23
  display: flex;
24
24
  flex-direction: column;
25
- gap: var(--osdk-filter-listogram-gap, calc(var(--osdk-surface-spacing) * 1));
25
+ gap: var(--osdk-filter-listogram-gap);
26
26
  }
27
27
 
28
28
  .row {
29
29
  display: flex;
30
30
  align-items: center;
31
- gap: var(--osdk-filter-listogram-row-gap, calc(var(--osdk-surface-spacing) * 2));
32
- padding: var(--osdk-filter-listogram-row-padding, calc(var(--osdk-surface-spacing) * 1));
31
+ gap: var(--osdk-filter-listogram-row-gap);
32
+ padding: var(--osdk-filter-listogram-row-padding);
33
33
  border: none;
34
34
  background: transparent;
35
35
  cursor: pointer;
36
- border-radius: var(--osdk-surface-border-radius);
36
+ border-radius: var(--osdk-filter-listogram-row-border-radius);
37
37
  text-align: left;
38
38
  width: 100%;
39
- transition: background-color var(--osdk-emphasis-transition-duration) var(--osdk-emphasis-ease-default);
39
+ transition: background-color var(--osdk-filter-listogram-row-transition);
40
40
 
41
41
  &:hover {
42
- background: var(--osdk-surface-background-color-default-hover);
42
+ background: var(--osdk-filter-listogram-row-bg-hover);
43
43
  }
44
44
 
45
45
  &:focus-visible {
46
- outline: var(--osdk-emphasis-focus-width) solid var(--osdk-emphasis-focus-color);
47
- outline-offset: var(--osdk-emphasis-focus-offset);
46
+ outline: var(--osdk-filter-listogram-row-focus-outline);
47
+ outline-offset: var(--osdk-filter-listogram-row-focus-offset);
48
48
  }
49
49
  }
50
50
 
51
51
  .row[aria-pressed="true"] {
52
- background: var(--osdk-surface-background-color-default-active);
52
+ background: var(--osdk-filter-listogram-row-bg-active);
53
53
  }
54
54
 
55
55
  .label {
56
56
  flex: 1;
57
- font-size: var(--osdk-typography-size-body-medium);
58
- color: var(--osdk-typography-color-default-rest);
57
+ font-family: var(--osdk-filter-listogram-label-font-family);
58
+ font-size: var(--osdk-filter-listogram-label-font-size);
59
+ color: var(--osdk-filter-listogram-label-color);
59
60
  overflow: hidden;
60
61
  text-overflow: ellipsis;
61
62
  white-space: nowrap;
@@ -63,26 +64,31 @@
63
64
 
64
65
  .bar {
65
66
  flex: 2;
66
- height: var(--osdk-filter-listogram-bar-height, 8px);
67
- background: var(--osdk-custom-color-gray-2);
68
- border-radius: var(--osdk-surface-border-radius);
67
+ height: var(--osdk-filter-listogram-bar-height);
68
+ background: var(--osdk-filter-listogram-bar-bg);
69
+ border-radius: var(--osdk-filter-listogram-bar-border-radius);
69
70
  overflow: hidden;
70
71
  }
71
72
 
72
73
  .barFill {
74
+ display: block;
73
75
  height: 100%;
74
- background: var(--osdk-filter-listogram-bar-color);
75
- transition: width var(--osdk-emphasis-transition-duration) var(--osdk-emphasis-ease-default);
76
+ width: 100%;
77
+ background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-bar-color));
78
+ transform-origin: left;
79
+ transform: scaleX(var(--osdk-filter-listogram-bar-fill-scale, 0));
80
+ transition: transform var(--osdk-filter-listogram-bar-fill-transition);
76
81
  }
77
82
 
78
83
  .row[aria-pressed="true"] .barFill {
79
- background: var(--osdk-filter-listogram-selected-color);
84
+ background: var(--osdk-filter-listogram-row-bar-color, var(--osdk-filter-listogram-selected-color));
80
85
  }
81
86
 
82
87
  .count {
83
- font-size: var(--osdk-typography-size-body-small);
88
+ font-family: var(--osdk-filter-listogram-count-font-family);
89
+ font-size: var(--osdk-filter-listogram-count-font-size);
84
90
  font-variant-numeric: tabular-nums;
85
- color: var(--osdk-typography-color-muted);
91
+ color: var(--osdk-filter-listogram-count-color);
86
92
  min-width: 3ch;
87
93
  text-align: right;
88
94
  }