@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
@@ -14,6 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
+ import { Error } from "@blueprintjs/icons";
17
18
  import React, { useCallback, useState } from "react";
18
19
  import { ActionButton } from "../base-components/action-button/ActionButton.js";
19
20
  import styles from "./TableEditContainer.module.css";
@@ -25,42 +26,52 @@ export function TableEditContainer({
25
26
  cellEdits,
26
27
  onSubmitEdits,
27
28
  clearEdits,
28
- editMode
29
- } = editableConfig ?? {};
29
+ editModeState,
30
+ validationErrors
31
+ } = editableConfig;
30
32
  const hasEdits = Object.keys(cellEdits ?? {}).length > 0;
33
+ const hasValidationError = (validationErrors?.size ?? 0) > 0;
31
34
  const [isSubmitting, setIsSubmitting] = useState(false);
32
- const isInEditMode = editMode?.isActive;
33
- const canToggleEditMode = editMode?.type === "manual";
35
+ const isInEditMode = editModeState.isActive;
36
+ const canToggleEditMode = editModeState.type === "manual";
34
37
  const handleSubmitEdits = useCallback(async () => {
35
38
  setIsSubmitting(true);
36
39
  try {
37
40
  const success = await onSubmitEdits?.();
38
41
  if (success) {
39
42
  clearEdits?.();
40
- if (editMode?.type === "manual") {
41
- editMode.setActive(false);
43
+ if (editModeState?.type === "manual") {
44
+ editModeState.setActive(false);
42
45
  }
43
46
  }
44
47
  } finally {
45
48
  setIsSubmitting(false);
46
49
  }
47
- }, [editMode, onSubmitEdits, clearEdits]);
50
+ }, [editModeState, onSubmitEdits, clearEdits]);
48
51
  const handleCancelEdits = useCallback(() => {
49
52
  clearEdits?.();
50
- if (editMode?.type === "manual") {
51
- editMode.setActive(false);
53
+ if (editModeState?.type === "manual") {
54
+ editModeState.setActive(false);
52
55
  }
53
- }, [clearEdits, editMode]);
56
+ }, [clearEdits, editModeState]);
54
57
  const handleEnterEditMode = useCallback(() => {
55
- if (editMode?.type === "manual") {
56
- editMode.setActive(true);
58
+ if (editModeState?.type === "manual") {
59
+ editModeState.setActive(true);
57
60
  }
58
- }, [editMode]);
61
+ }, [editModeState]);
59
62
  return /*#__PURE__*/React.createElement("div", {
60
63
  className: styles.tableEditContainer
61
- }, hasEdits ? /*#__PURE__*/React.createElement("div", {
64
+ }, hasEdits || hasValidationError ? /*#__PURE__*/React.createElement("div", {
65
+ className: styles.editsInfoContainer
66
+ }, hasEdits && /*#__PURE__*/React.createElement("div", {
62
67
  className: styles.modificationCount
63
- }, `${cellEdits ? Object.keys(cellEdits).length : 0} modifications`) : isInEditMode && !focusedRowId && /*#__PURE__*/React.createElement("div", {
68
+ }, `${cellEdits ? Object.keys(cellEdits).length : 0} modifications`), hasEdits && hasValidationError && /*#__PURE__*/React.createElement("div", {
69
+ className: styles.divider
70
+ }), hasValidationError && /*#__PURE__*/React.createElement("div", {
71
+ className: styles.validationError
72
+ }, /*#__PURE__*/React.createElement(Error, {
73
+ className: styles.errorIcon
74
+ }), "Validation error")) : isInEditMode && !focusedRowId && /*#__PURE__*/React.createElement("div", {
64
75
  className: styles.placeholder
65
76
  }, "Select a row to edit data\u2026"), /*#__PURE__*/React.createElement("div", {
66
77
  className: styles.editButtons
@@ -73,7 +84,7 @@ export function TableEditContainer({
73
84
  }, "Cancel"), isInEditMode && !!onSubmitEdits && /*#__PURE__*/React.createElement(ActionButton, {
74
85
  variant: "primary",
75
86
  onClick: handleSubmitEdits,
76
- disabled: !hasEdits || isSubmitting
87
+ disabled: !hasEdits || isSubmitting || hasValidationError
77
88
  }, "Submit Edits")));
78
89
  }
79
90
  //# sourceMappingURL=TableEditContainer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableEditContainer.js","names":["React","useCallback","useState","ActionButton","styles","TableEditContainer","editableConfig","focusedRowId","cellEdits","onSubmitEdits","clearEdits","editMode","hasEdits","Object","keys","length","isSubmitting","setIsSubmitting","isInEditMode","isActive","canToggleEditMode","type","handleSubmitEdits","success","setActive","handleCancelEdits","handleEnterEditMode","createElement","className","tableEditContainer","modificationCount","placeholder","editButtons","variant","onClick","disabled"],"sources":["TableEditContainer.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData } from \"@tanstack/react-table\";\nimport React, { type ReactElement, useCallback, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport styles from \"./TableEditContainer.module.css\";\nimport type { EditableConfig } from \"./utils/types.js\";\n\ninterface TableEditContainerProps<\n TData extends RowData,\n> {\n editableConfig?: EditableConfig<TData, unknown>;\n focusedRowId?: string | null;\n}\n\nexport function TableEditContainer<\n TData extends RowData,\n>({\n editableConfig,\n focusedRowId,\n}: TableEditContainerProps<TData>): ReactElement {\n const {\n cellEdits,\n onSubmitEdits,\n clearEdits,\n editMode,\n } = editableConfig ?? {};\n\n const hasEdits = Object.keys(cellEdits ?? {}).length > 0;\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const isInEditMode = editMode?.isActive;\n const canToggleEditMode = editMode?.type === \"manual\";\n\n const handleSubmitEdits = useCallback(async () => {\n setIsSubmitting(true);\n try {\n const success = await onSubmitEdits?.();\n if (success) {\n clearEdits?.();\n if (editMode?.type === \"manual\") {\n editMode.setActive(false);\n }\n }\n } finally {\n setIsSubmitting(false);\n }\n }, [editMode, onSubmitEdits, clearEdits]);\n\n const handleCancelEdits = useCallback(() => {\n clearEdits?.();\n if (editMode?.type === \"manual\") {\n editMode.setActive(false);\n }\n }, [clearEdits, editMode]);\n\n const handleEnterEditMode = useCallback(() => {\n if (editMode?.type === \"manual\") {\n editMode.setActive(true);\n }\n }, [editMode]);\n\n return (\n <div className={styles.tableEditContainer}>\n {hasEdits\n ? (\n <div className={styles.modificationCount}>\n {`${cellEdits ? Object.keys(cellEdits).length : 0} modifications`}\n </div>\n )\n : (isInEditMode && !focusedRowId && (\n <div className={styles.placeholder}>\n Select a row to edit data…\n </div>\n ))}\n <div className={styles.editButtons}>\n {!isInEditMode && canToggleEditMode && (\n <ActionButton\n variant=\"primary\"\n onClick={handleEnterEditMode}\n >\n Edit Table\n </ActionButton>\n )}\n {isInEditMode && canToggleEditMode && (\n <ActionButton\n variant=\"secondary\"\n onClick={handleCancelEdits}\n >\n Cancel\n </ActionButton>\n )}\n {isInEditMode && !!onSubmitEdits && (\n <ActionButton\n variant=\"primary\"\n onClick={handleSubmitEdits}\n disabled={!hasEdits || isSubmitting}\n >\n Submit Edits\n </ActionButton>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TableEditContainer.js","names":["Error","React","useCallback","useState","ActionButton","styles","TableEditContainer","editableConfig","focusedRowId","cellEdits","onSubmitEdits","clearEdits","editModeState","validationErrors","hasEdits","Object","keys","length","hasValidationError","size","isSubmitting","setIsSubmitting","isInEditMode","isActive","canToggleEditMode","type","handleSubmitEdits","success","setActive","handleCancelEdits","handleEnterEditMode","createElement","className","tableEditContainer","editsInfoContainer","modificationCount","divider","validationError","errorIcon","placeholder","editButtons","variant","onClick","disabled"],"sources":["TableEditContainer.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error } from \"@blueprintjs/icons\";\nimport type { RowData } from \"@tanstack/react-table\";\nimport React, { type ReactElement, useCallback, useState } from \"react\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport styles from \"./TableEditContainer.module.css\";\nimport type { EditableConfig } from \"./utils/types.js\";\n\ninterface TableEditContainerProps<\n TData extends RowData,\n> {\n editableConfig: EditableConfig<TData, unknown>;\n focusedRowId?: string | null;\n}\n\nexport function TableEditContainer<\n TData extends RowData,\n>({\n editableConfig,\n focusedRowId,\n}: TableEditContainerProps<TData>): ReactElement {\n const {\n cellEdits,\n onSubmitEdits,\n clearEdits,\n editModeState,\n validationErrors,\n } = editableConfig;\n\n const hasEdits = Object.keys(cellEdits ?? {}).length > 0;\n const hasValidationError = (validationErrors?.size ?? 0) > 0;\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const isInEditMode = editModeState.isActive;\n const canToggleEditMode = editModeState.type === \"manual\";\n\n const handleSubmitEdits = useCallback(async () => {\n setIsSubmitting(true);\n try {\n const success = await onSubmitEdits?.();\n if (success) {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }\n } finally {\n setIsSubmitting(false);\n }\n }, [editModeState, onSubmitEdits, clearEdits]);\n\n const handleCancelEdits = useCallback(() => {\n clearEdits?.();\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(false);\n }\n }, [clearEdits, editModeState]);\n\n const handleEnterEditMode = useCallback(() => {\n if (editModeState?.type === \"manual\") {\n editModeState.setActive(true);\n }\n }, [editModeState]);\n\n return (\n <div className={styles.tableEditContainer}>\n {hasEdits || hasValidationError\n ? (\n <div className={styles.editsInfoContainer}>\n {hasEdits && (\n <div className={styles.modificationCount}>\n {`${\n cellEdits ? Object.keys(cellEdits).length : 0\n } modifications`}\n </div>\n )}\n {hasEdits && hasValidationError && (\n <div className={styles.divider} />\n )}\n {hasValidationError && (\n <div className={styles.validationError}>\n <Error className={styles.errorIcon} />\n Validation error\n </div>\n )}\n </div>\n )\n : (isInEditMode && !focusedRowId && (\n <div className={styles.placeholder}>\n Select a row to edit data…\n </div>\n ))}\n <div className={styles.editButtons}>\n {!isInEditMode && canToggleEditMode && (\n <ActionButton\n variant=\"primary\"\n onClick={handleEnterEditMode}\n >\n Edit Table\n </ActionButton>\n )}\n {isInEditMode && canToggleEditMode && (\n <ActionButton\n variant=\"secondary\"\n onClick={handleCancelEdits}\n >\n Cancel\n </ActionButton>\n )}\n {isInEditMode && !!onSubmitEdits && (\n <ActionButton\n variant=\"primary\"\n onClick={handleSubmitEdits}\n disabled={!hasEdits || isSubmitting || hasValidationError}\n >\n Submit Edits\n </ActionButton>\n )}\n </div>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -30,6 +30,15 @@
30
30
  padding: calc(var(--osdk-surface-spacing) * 2) 0;
31
31
  }
32
32
 
33
+ .editsInfoContainer {
34
+ display: flex;
35
+ align-items: center;
36
+ justify-content: center;
37
+ flex-direction: row;
38
+ gap: calc(var(--osdk-surface-spacing) * 3);
39
+ font-size: var(--osdk-typography-size-body-small);
40
+ }
41
+
33
42
  .modificationCount {
34
43
  color: var(--osdk-intent-primary-rest);
35
44
  font-size: var(--osdk-typography-size-body-small);
@@ -42,3 +51,21 @@
42
51
  gap: 8px;
43
52
  flex: 1;
44
53
  }
54
+
55
+ .validationError {
56
+ display: flex;
57
+ align-items: center;
58
+ gap: calc(var(--osdk-surface-spacing) * 2);
59
+ color: var(--osdk-intent-danger-rest);
60
+ }
61
+
62
+ .errorIcon {
63
+ color: var(--osdk-intent-danger-rest);
64
+ }
65
+
66
+ .divider {
67
+ width: 1px;
68
+ height: 8px;
69
+ background-color: var(--osdk-surface-border-color-default);
70
+ align-self: center;
71
+ }
@@ -71,10 +71,6 @@
71
71
  color: var(--osdk-table-header-menu-color-active);
72
72
  }
73
73
 
74
- &:focus {
75
- outline: none;
76
- }
77
-
78
74
  &:focus-visible {
79
75
  outline: var(--osdk-focus-outline);
80
76
  outline-offset: var(--osdk-focus-visible-outline-offset);
@@ -95,10 +91,6 @@
95
91
  color: var(--osdk-typography-color-default-rest);
96
92
  box-shadow: var(--osdk-surface-shadow-2);
97
93
  font-size: var(--osdk-typography-size-body-medium);
98
-
99
- &:focus {
100
- outline: none;
101
- }
102
94
  }
103
95
 
104
96
  .osdkHeaderMenuItem {
@@ -111,10 +103,6 @@
111
103
  border-radius: var(--osdk-surface-border-radius);
112
104
  }
113
105
 
114
- &:focus {
115
- outline: none;
116
- }
117
-
118
106
  &:focus-visible {
119
107
  outline: var(--osdk-focus-outline);
120
108
  outline-offset: var(--osdk-focus-visible-outline-offset);
@@ -22,7 +22,7 @@ export function TableRow({
22
22
  virtualRow,
23
23
  onRowClick,
24
24
  renderCellContextMenu,
25
- focusedRowId,
25
+ isFocused,
26
26
  setFocusedRowId,
27
27
  isInEditMode
28
28
  }) {
@@ -34,7 +34,7 @@ export function TableRow({
34
34
  }, [isInEditMode, onRowClick, row.original, row.id, setFocusedRowId]);
35
35
  return /*#__PURE__*/React.createElement("tr", {
36
36
  "data-selected": row.getIsSelected(),
37
- "data-focused": focusedRowId === row.id,
37
+ "data-focused": isFocused,
38
38
  className: styles.osdkTableRow,
39
39
  style: {
40
40
  height: `${virtualRow.size}px`,
@@ -1 +1 @@
1
- {"version":3,"file":"TableRow.js","names":["React","useCallback","TableCell","styles","TableRow","row","virtualRow","onRowClick","renderCellContextMenu","focusedRowId","setFocusedRowId","isInEditMode","handleClick","id","original","createElement","getIsSelected","className","osdkTableRow","style","height","size","transform","start","onClick","getVisibleCells","map","cell","key"],"sources":["TableRow.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 { Cell, Row, RowData } from \"@tanstack/react-table\";\nimport type { VirtualItem } from \"@tanstack/react-virtual\";\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\n\ninterface TableRowProps<TData extends RowData> {\n row: Row<TData>;\n virtualRow: VirtualItem;\n onRowClick?: (row: TData) => void;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n focusedRowId?: string | null;\n setFocusedRowId?: (rowId: string | null) => void;\n isInEditMode?: boolean;\n}\n\nexport function TableRow<TData extends RowData>({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n focusedRowId,\n setFocusedRowId,\n isInEditMode,\n}: TableRowProps<TData>): React.ReactElement {\n const handleClick = useCallback(() => {\n setFocusedRowId?.(row.id);\n\n if (!isInEditMode) {\n onRowClick?.(row.original);\n }\n }, [isInEditMode, onRowClick, row.original, row.id, setFocusedRowId]);\n\n return (\n <tr\n data-selected={row.getIsSelected()}\n data-focused={focusedRowId === row.id}\n className={styles.osdkTableRow}\n style={{\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleClick}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n cell={cell}\n renderCellContextMenu={renderCellContextMenu}\n />\n ))}\n </tr>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,OAAOC,MAAM,MAAM,uBAAuB;AAe1C,OAAO,SAASC,QAAQA,CAAwB;EAC9CC,GAAG;EACHC,UAAU;EACVC,UAAU;EACVC,qBAAqB;EACrBC,YAAY;EACZC,eAAe;EACfC;AACoB,CAAC,EAAsB;EAC3C,MAAMC,WAAW,GAAGX,WAAW,CAAC,MAAM;IACpCS,eAAe,GAAGL,GAAG,CAACQ,EAAE,CAAC;IAEzB,IAAI,CAACF,YAAY,EAAE;MACjBJ,UAAU,GAAGF,GAAG,CAACS,QAAQ,CAAC;IAC5B;EACF,CAAC,EAAE,CAACH,YAAY,EAAEJ,UAAU,EAAEF,GAAG,CAACS,QAAQ,EAAET,GAAG,CAACQ,EAAE,EAAEH,eAAe,CAAC,CAAC;EAErE,oBACEV,KAAA,CAAAe,aAAA;IACE,iBAAeV,GAAG,CAACW,aAAa,CAAC,CAAE;IACnC,gBAAcP,YAAY,KAAKJ,GAAG,CAACQ,EAAG;IACtCI,SAAS,EAAEd,MAAM,CAACe,YAAa;IAC/BC,KAAK,EAAE;MACLC,MAAM,EAAE,GAAGd,UAAU,CAACe,IAAI,IAAI;MAC9BC,SAAS,EAAE,cAAchB,UAAU,CAACiB,KAAK;IAC3C,CAAE;IACFC,OAAO,EAAEZ;EAAY,GAEpBP,GAAG,CAACoB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,IAAI,iBAC9B3B,KAAA,CAAAe,aAAA,CAACb,SAAS;IACR0B,GAAG,EAAED,IAAI,CAACd,EAAG;IACbc,IAAI,EAAEA,IAAK;IACXnB,qBAAqB,EAAEA;EAAsB,CAC9C,CACF,CACC,CAAC;AAET","ignoreList":[]}
1
+ {"version":3,"file":"TableRow.js","names":["React","useCallback","TableCell","styles","TableRow","row","virtualRow","onRowClick","renderCellContextMenu","isFocused","setFocusedRowId","isInEditMode","handleClick","id","original","createElement","getIsSelected","className","osdkTableRow","style","height","size","transform","start","onClick","getVisibleCells","map","cell","key"],"sources":["TableRow.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 { Cell, Row, RowData } from \"@tanstack/react-table\";\nimport type { VirtualItem } from \"@tanstack/react-virtual\";\nimport React, { useCallback } from \"react\";\nimport { TableCell } from \"./TableCell.js\";\nimport styles from \"./TableRow.module.css\";\n\ninterface TableRowProps<TData extends RowData> {\n row: Row<TData>;\n virtualRow: VirtualItem;\n onRowClick?: (row: TData) => void;\n renderCellContextMenu?: (\n row: TData,\n cell: Cell<TData, unknown>,\n ) => React.ReactNode;\n isFocused: boolean;\n setFocusedRowId?: (rowId: string | null) => void;\n isInEditMode?: boolean;\n}\n\nexport function TableRow<TData extends RowData>({\n row,\n virtualRow,\n onRowClick,\n renderCellContextMenu,\n isFocused,\n setFocusedRowId,\n isInEditMode,\n}: TableRowProps<TData>): React.ReactElement {\n const handleClick = useCallback(() => {\n setFocusedRowId?.(row.id);\n\n if (!isInEditMode) {\n onRowClick?.(row.original);\n }\n }, [isInEditMode, onRowClick, row.original, row.id, setFocusedRowId]);\n\n return (\n <tr\n data-selected={row.getIsSelected()}\n data-focused={isFocused}\n className={styles.osdkTableRow}\n style={{\n height: `${virtualRow.size}px`,\n transform: `translateY(${virtualRow.start}px)`,\n }}\n onClick={handleClick}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n cell={cell}\n renderCellContextMenu={renderCellContextMenu}\n />\n ))}\n </tr>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAIA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,OAAOC,MAAM,MAAM,uBAAuB;AAe1C,OAAO,SAASC,QAAQA,CAAwB;EAC9CC,GAAG;EACHC,UAAU;EACVC,UAAU;EACVC,qBAAqB;EACrBC,SAAS;EACTC,eAAe;EACfC;AACoB,CAAC,EAAsB;EAC3C,MAAMC,WAAW,GAAGX,WAAW,CAAC,MAAM;IACpCS,eAAe,GAAGL,GAAG,CAACQ,EAAE,CAAC;IAEzB,IAAI,CAACF,YAAY,EAAE;MACjBJ,UAAU,GAAGF,GAAG,CAACS,QAAQ,CAAC;IAC5B;EACF,CAAC,EAAE,CAACH,YAAY,EAAEJ,UAAU,EAAEF,GAAG,CAACS,QAAQ,EAAET,GAAG,CAACQ,EAAE,EAAEH,eAAe,CAAC,CAAC;EAErE,oBACEV,KAAA,CAAAe,aAAA;IACE,iBAAeV,GAAG,CAACW,aAAa,CAAC,CAAE;IACnC,gBAAcP,SAAU;IACxBQ,SAAS,EAAEd,MAAM,CAACe,YAAa;IAC/BC,KAAK,EAAE;MACLC,MAAM,EAAE,GAAGd,UAAU,CAACe,IAAI,IAAI;MAC9BC,SAAS,EAAE,cAAchB,UAAU,CAACiB,KAAK;IAC3C,CAAE;IACFC,OAAO,EAAEZ;EAAY,GAEpBP,GAAG,CAACoB,eAAe,CAAC,CAAC,CAACC,GAAG,CAAEC,IAAI,iBAC9B3B,KAAA,CAAAe,aAAA,CAACb,SAAS;IACR0B,GAAG,EAAED,IAAI,CAACd,EAAG;IACbc,IAAI,EAAEA,IAAK;IACXnB,qBAAqB,EAAEA;EAAsB,CAC9C,CACF,CACC,CAAC;AAET","ignoreList":[]}
@@ -68,7 +68,8 @@ function getColumnsFromColumnDefinitions(columnDefinitions, objectProperties) {
68
68
  columnName: columnName || propertyMetadata?.displayName,
69
69
  isVisible: col.isVisible !== false,
70
70
  editable,
71
- dataType
71
+ dataType,
72
+ validateEdit: col.validateEdit
72
73
  },
73
74
  size: width,
74
75
  ...(minWidth ? {
@@ -1 +1 @@
1
- {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","propertyMetadata","type","id","undefined","colKey","dataType","colDef","accessorKey","header","displayName","meta","isVisible","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","Object","entries","key","property"],"sources":["useColumnDefs.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isVisible: col.isVisible !== false,\n editable,\n dataType,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n if (renderCell) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useColumnDefs.js","names":["useOsdkMetadata","useMemo","renderDefaultCell","useColumnDefs","objectType","columnDefinitions","metadata","loading","error","columns","objectProperties","properties","getColumnsFromColumnDefinitions","getDefaultColumns","map","col","locator","width","minWidth","maxWidth","resizable","orderable","filterable","editable","renderCell","renderHeader","columnName","propertyMetadata","type","id","undefined","colKey","dataType","colDef","accessorKey","header","displayName","meta","isVisible","validateEdit","size","minSize","maxSize","enableResizing","enableSorting","enableColumnFilter","cell","cellContext","object","row","original","Object","entries","key","property"],"sources":["useColumnDefs.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectMetadata,\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useOsdkMetadata } from \"@osdk/react\";\nimport type { AccessorColumnDef } from \"@tanstack/react-table\";\nimport { useMemo } from \"react\";\nimport { renderDefaultCell } from \"../DefaultCellRenderer.js\";\nimport type { ColumnDefinition } from \"../ObjectTableApi.js\";\n\ninterface UseColumnDefsResult<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<string, never>,\n> {\n columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[];\n\n loading: boolean;\n\n error: string | undefined;\n}\n\n/**\n * Hook which builds column definitions for tanstack-table given the objectSet\n */\nexport function useColumnDefs<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n objectType: Q,\n columnDefinitions?: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n): UseColumnDefsResult<Q, RDPs> {\n const { metadata, loading, error } = useOsdkMetadata(objectType);\n\n const columns: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >[] = useMemo(() => {\n const objectProperties = metadata?.properties;\n // If columnDefinitions is provided, construct colDefs with it\n if (columnDefinitions) {\n return getColumnsFromColumnDefinitions<Q, RDPs, FunctionColumns>(\n columnDefinitions,\n objectProperties,\n );\n }\n\n // If not, return the default columns from the object properties\n return getDefaultColumns<Q, RDPs>(objectProperties);\n }, [columnDefinitions, metadata?.properties]);\n\n return { columns, loading, error };\n}\n\nfunction getColumnsFromColumnDefinitions<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>(\n columnDefinitions: Array<ColumnDefinition<Q, RDPs, FunctionColumns>>,\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n return columnDefinitions.map((col) => {\n const {\n locator,\n width,\n minWidth,\n maxWidth,\n resizable,\n orderable,\n filterable,\n editable,\n renderCell,\n renderHeader,\n columnName,\n } = col;\n\n const propertyMetadata = locator.type === \"property\"\n ? objectProperties?.[locator.id]\n : undefined;\n\n const colKey = locator.id as string;\n\n const dataType =\n propertyMetadata?.type && typeof propertyMetadata.type === \"string\"\n ? propertyMetadata.type\n : undefined;\n\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n id: colKey,\n accessorKey: colKey,\n header: renderHeader ?? (columnName || propertyMetadata?.displayName),\n meta: {\n columnName: columnName || propertyMetadata?.displayName,\n isVisible: col.isVisible !== false,\n editable,\n dataType,\n validateEdit: col.validateEdit,\n },\n size: width,\n ...(minWidth ? { minSize: minWidth } : {}),\n ...(maxWidth ? { maxSize: maxWidth } : {}),\n enableResizing: resizable,\n enableSorting: orderable,\n enableColumnFilter: filterable,\n cell: (cellContext) => {\n const object: Osdk.Instance<\n Q,\n \"$allBaseProperties\",\n PropertyKeys<Q>,\n RDPs\n > = cellContext.row.original;\n\n if (renderCell) {\n return renderCell(object, locator);\n }\n\n return renderDefaultCell(cellContext);\n },\n };\n\n return colDef;\n });\n}\n\nfunction getDefaultColumns<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n>(\n objectProperties?: Record<any, ObjectMetadata.Property>,\n): Array<\n AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n >\n> {\n if (!objectProperties) return [];\n\n return Object.entries(objectProperties).map(([key, property]) => {\n const colDef: AccessorColumnDef<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>\n > = {\n accessorKey: key,\n header: property.displayName ?? key,\n };\n return colDef;\n });\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,6 +22,14 @@ export function useEditableTable({
22
22
  }) {
23
23
  const [isActive, setActive] = useState(editMode === "always");
24
24
  const [cellEdits, setCellEdits] = useState({});
25
+ const [validationErrors, setValidationErrors] = useState(new Map());
26
+ const clearCellValidationError = useCallback(cellId => {
27
+ setValidationErrors(prev => {
28
+ const newErrors = new Map(prev);
29
+ newErrors.delete(cellId);
30
+ return newErrors;
31
+ });
32
+ }, []);
25
33
  const handleCellEdit = useCallback((cellId, info) => {
26
34
  // If value is changed back to original, remove it from edits
27
35
  if (info.newValue === info.oldValue) {
@@ -42,12 +50,20 @@ export function useEditableTable({
42
50
  }, [onCellValueChanged]);
43
51
  const clearEdits = useCallback(() => {
44
52
  setCellEdits({});
53
+ setValidationErrors(new Map());
45
54
  }, []);
46
55
  const handleSubmitEdits = useCallback(async () => {
47
56
  const edits = Object.values(cellEdits);
48
57
  return onSubmitEdits ? onSubmitEdits(edits) : false;
49
58
  }, [cellEdits, onSubmitEdits]);
50
- const editModeConfig = editMode === "always" ? {
59
+ const onCellValidationError = useCallback((cellId, error) => {
60
+ setValidationErrors(prev => {
61
+ const newErrors = new Map(prev);
62
+ newErrors.set(cellId, error);
63
+ return newErrors;
64
+ });
65
+ }, []);
66
+ const editModeState = editMode === "always" ? {
51
67
  type: "always",
52
68
  isActive: true
53
69
  } : {
@@ -60,7 +76,10 @@ export function useEditableTable({
60
76
  onCellEdit: handleCellEdit,
61
77
  onSubmitEdits: onSubmitEdits ? handleSubmitEdits : undefined,
62
78
  clearEdits,
63
- editMode: editModeConfig
79
+ editModeState,
80
+ onCellValidationError,
81
+ validationErrors,
82
+ clearCellValidationError
64
83
  };
65
84
  }
66
85
  //# sourceMappingURL=useEditableTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEditableTable.js","names":["useCallback","useState","useEditableTable","editMode","onCellValueChanged","onSubmitEdits","isActive","setActive","cellEdits","setCellEdits","handleCellEdit","cellId","info","newValue","oldValue","prev","_","rest","clearEdits","handleSubmitEdits","edits","Object","values","editModeConfig","type","onCellEdit","undefined"],"sources":["useEditableTable.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useCallback, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\nimport type { CellEditInfo, EditableConfig, EditMode } from \"../utils/types.js\";\n\nexport interface UseEditableTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n editMode?: \"always\" | \"manual\";\n\n onCellValueChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onCellValueChanged\"];\n\n onSubmitEdits?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onSubmitEdits\"];\n}\n\nexport function useEditableTable<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n editMode = \"manual\",\n onCellValueChanged,\n onSubmitEdits,\n}: UseEditableTableProps<Q, RDPs, FunctionColumns>): EditableConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n> {\n const [isActive, setActive] = useState(editMode === \"always\");\n const [cellEdits, setCellEdits] = useState<\n Record<\n string,\n CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >\n >\n >(\n {},\n );\n\n const handleCellEdit = useCallback(\n (\n cellId: string,\n info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => {\n // If value is changed back to original, remove it from edits\n if (info.newValue === info.oldValue) {\n setCellEdits(prev => {\n const { [cellId]: _, ...rest } = prev;\n return rest;\n });\n } else {\n setCellEdits(prev => ({\n ...prev,\n [cellId]: info,\n }));\n }\n\n onCellValueChanged?.(info);\n },\n [onCellValueChanged],\n );\n\n const clearEdits = useCallback(() => {\n setCellEdits({});\n }, []);\n\n const handleSubmitEdits = useCallback(async () => {\n const edits = Object.values(cellEdits);\n return onSubmitEdits ? onSubmitEdits(edits) : false;\n }, [cellEdits, onSubmitEdits]);\n\n const editModeConfig: EditMode = editMode === \"always\"\n ? { type: \"always\", isActive: true }\n : { type: \"manual\", isActive, setActive };\n\n return {\n cellEdits,\n onCellEdit: handleCellEdit,\n onSubmitEdits: onSubmitEdits ? handleSubmitEdits : undefined,\n clearEdits,\n editMode: editModeConfig,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AA8B7C,OAAO,SAASC,gBAAgBA,CAU9B;EACAC,QAAQ,GAAG,QAAQ;EACnBC,kBAAkB;EAClBC;AAC+C,CAAC,EAGhD;EACA,MAAM,CAACC,QAAQ,EAAEC,SAAS,CAAC,GAAGN,QAAQ,CAACE,QAAQ,KAAK,QAAQ,CAAC;EAC7D,MAAM,CAACK,SAAS,EAAEC,YAAY,CAAC,GAAGR,QAAQ,CASxC,CAAC,CACH,CAAC;EAED,MAAMS,cAAc,GAAGV,WAAW,CAChC,CACEW,MAAc,EACdC,IAGC,KACE;IACH;IACA,IAAIA,IAAI,CAACC,QAAQ,KAAKD,IAAI,CAACE,QAAQ,EAAE;MACnCL,YAAY,CAACM,IAAI,IAAI;QACnB,MAAM;UAAE,CAACJ,MAAM,GAAGK,CAAC;UAAE,GAAGC;QAAK,CAAC,GAAGF,IAAI;QACrC,OAAOE,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,MAAM;MACLR,YAAY,CAACM,IAAI,KAAK;QACpB,GAAGA,IAAI;QACP,CAACJ,MAAM,GAAGC;MACZ,CAAC,CAAC,CAAC;IACL;IAEAR,kBAAkB,GAAGQ,IAAI,CAAC;EAC5B,CAAC,EACD,CAACR,kBAAkB,CACrB,CAAC;EAED,MAAMc,UAAU,GAAGlB,WAAW,CAAC,MAAM;IACnCS,YAAY,CAAC,CAAC,CAAC,CAAC;EAClB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMU,iBAAiB,GAAGnB,WAAW,CAAC,YAAY;IAChD,MAAMoB,KAAK,GAAGC,MAAM,CAACC,MAAM,CAACd,SAAS,CAAC;IACtC,OAAOH,aAAa,GAAGA,aAAa,CAACe,KAAK,CAAC,GAAG,KAAK;EACrD,CAAC,EAAE,CAACZ,SAAS,EAAEH,aAAa,CAAC,CAAC;EAE9B,MAAMkB,cAAwB,GAAGpB,QAAQ,KAAK,QAAQ,GAClD;IAAEqB,IAAI,EAAE,QAAQ;IAAElB,QAAQ,EAAE;EAAK,CAAC,GAClC;IAAEkB,IAAI,EAAE,QAAQ;IAAElB,QAAQ;IAAEC;EAAU,CAAC;EAE3C,OAAO;IACLC,SAAS;IACTiB,UAAU,EAAEf,cAAc;IAC1BL,aAAa,EAAEA,aAAa,GAAGc,iBAAiB,GAAGO,SAAS;IAC5DR,UAAU;IACVf,QAAQ,EAAEoB;EACZ,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"file":"useEditableTable.js","names":["useCallback","useState","useEditableTable","editMode","onCellValueChanged","onSubmitEdits","isActive","setActive","cellEdits","setCellEdits","validationErrors","setValidationErrors","Map","clearCellValidationError","cellId","prev","newErrors","delete","handleCellEdit","info","newValue","oldValue","_","rest","clearEdits","handleSubmitEdits","edits","Object","values","onCellValidationError","error","set","editModeState","type","onCellEdit","undefined"],"sources":["useEditableTable.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type {\n ObjectOrInterfaceDefinition,\n Osdk,\n PropertyKeys,\n QueryDefinition,\n SimplePropertyDef,\n} from \"@osdk/api\";\nimport { useCallback, useState } from \"react\";\nimport type { ObjectTableProps } from \"../ObjectTableApi.js\";\nimport type {\n CellEditInfo,\n EditableConfig,\n EditModeState,\n} from \"../utils/types.js\";\n\nexport interface UseEditableTableProps<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n> {\n editMode?: \"always\" | \"manual\";\n\n onCellValueChanged?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onCellValueChanged\"];\n\n onSubmitEdits?: ObjectTableProps<\n Q,\n RDPs,\n FunctionColumns\n >[\"onSubmitEdits\"];\n}\n\nexport function useEditableTable<\n Q extends ObjectOrInterfaceDefinition,\n RDPs extends Record<string, SimplePropertyDef> = Record<\n string,\n never\n >,\n FunctionColumns extends Record<string, QueryDefinition<{}>> = Record<\n string,\n never\n >,\n>({\n editMode = \"manual\",\n onCellValueChanged,\n onSubmitEdits,\n}: UseEditableTableProps<Q, RDPs, FunctionColumns>): EditableConfig<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n> {\n const [isActive, setActive] = useState<boolean>(\n editMode === \"always\",\n );\n const [cellEdits, setCellEdits] = useState<\n Record<\n string,\n CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >\n >\n >(\n {},\n );\n const [validationErrors, setValidationErrors] = useState<\n Map<string, string>\n >(\n new Map(),\n );\n\n const clearCellValidationError = useCallback((cellId: string) => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.delete(cellId);\n return newErrors;\n });\n }, []);\n\n const handleCellEdit = useCallback(\n (\n cellId: string,\n info: CellEditInfo<\n Osdk.Instance<Q, \"$allBaseProperties\", PropertyKeys<Q>, RDPs>,\n unknown\n >,\n ) => {\n // If value is changed back to original, remove it from edits\n if (info.newValue === info.oldValue) {\n setCellEdits(prev => {\n const { [cellId]: _, ...rest } = prev;\n return rest;\n });\n } else {\n setCellEdits(prev => ({\n ...prev,\n [cellId]: info,\n }));\n }\n\n onCellValueChanged?.(info);\n },\n [onCellValueChanged],\n );\n\n const clearEdits = useCallback(() => {\n setCellEdits({});\n setValidationErrors(new Map());\n }, []);\n\n const handleSubmitEdits = useCallback(async () => {\n const edits = Object.values(cellEdits);\n return onSubmitEdits ? onSubmitEdits(edits) : false;\n }, [cellEdits, onSubmitEdits]);\n\n const onCellValidationError = useCallback(\n (cellId: string, error: string) => {\n setValidationErrors(prev => {\n const newErrors = new Map(prev);\n newErrors.set(cellId, error);\n return newErrors;\n });\n },\n [],\n );\n\n const editModeState: EditModeState = editMode === \"always\"\n ? { type: \"always\", isActive: true }\n : { type: \"manual\", isActive, setActive };\n\n return {\n cellEdits,\n onCellEdit: handleCellEdit,\n onSubmitEdits: onSubmitEdits ? handleSubmitEdits : undefined,\n clearEdits,\n editModeState,\n onCellValidationError,\n validationErrors,\n clearCellValidationError,\n };\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AAkC7C,OAAO,SAASC,gBAAgBA,CAU9B;EACAC,QAAQ,GAAG,QAAQ;EACnBC,kBAAkB;EAClBC;AAC+C,CAAC,EAGhD;EACA,MAAM,CAACC,QAAQ,EAAEC,SAAS,CAAC,GAAGN,QAAQ,CACpCE,QAAQ,KAAK,QACf,CAAC;EACD,MAAM,CAACK,SAAS,EAAEC,YAAY,CAAC,GAAGR,QAAQ,CASxC,CAAC,CACH,CAAC;EACD,MAAM,CAACS,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGV,QAAQ,CAGtD,IAAIW,GAAG,CAAC,CACV,CAAC;EAED,MAAMC,wBAAwB,GAAGb,WAAW,CAAEc,MAAc,IAAK;IAC/DH,mBAAmB,CAACI,IAAI,IAAI;MAC1B,MAAMC,SAAS,GAAG,IAAIJ,GAAG,CAACG,IAAI,CAAC;MAC/BC,SAAS,CAACC,MAAM,CAACH,MAAM,CAAC;MACxB,OAAOE,SAAS;IAClB,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,cAAc,GAAGlB,WAAW,CAChC,CACEc,MAAc,EACdK,IAGC,KACE;IACH;IACA,IAAIA,IAAI,CAACC,QAAQ,KAAKD,IAAI,CAACE,QAAQ,EAAE;MACnCZ,YAAY,CAACM,IAAI,IAAI;QACnB,MAAM;UAAE,CAACD,MAAM,GAAGQ,CAAC;UAAE,GAAGC;QAAK,CAAC,GAAGR,IAAI;QACrC,OAAOQ,IAAI;MACb,CAAC,CAAC;IACJ,CAAC,MAAM;MACLd,YAAY,CAACM,IAAI,KAAK;QACpB,GAAGA,IAAI;QACP,CAACD,MAAM,GAAGK;MACZ,CAAC,CAAC,CAAC;IACL;IAEAf,kBAAkB,GAAGe,IAAI,CAAC;EAC5B,CAAC,EACD,CAACf,kBAAkB,CACrB,CAAC;EAED,MAAMoB,UAAU,GAAGxB,WAAW,CAAC,MAAM;IACnCS,YAAY,CAAC,CAAC,CAAC,CAAC;IAChBE,mBAAmB,CAAC,IAAIC,GAAG,CAAC,CAAC,CAAC;EAChC,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMa,iBAAiB,GAAGzB,WAAW,CAAC,YAAY;IAChD,MAAM0B,KAAK,GAAGC,MAAM,CAACC,MAAM,CAACpB,SAAS,CAAC;IACtC,OAAOH,aAAa,GAAGA,aAAa,CAACqB,KAAK,CAAC,GAAG,KAAK;EACrD,CAAC,EAAE,CAAClB,SAAS,EAAEH,aAAa,CAAC,CAAC;EAE9B,MAAMwB,qBAAqB,GAAG7B,WAAW,CACvC,CAACc,MAAc,EAAEgB,KAAa,KAAK;IACjCnB,mBAAmB,CAACI,IAAI,IAAI;MAC1B,MAAMC,SAAS,GAAG,IAAIJ,GAAG,CAACG,IAAI,CAAC;MAC/BC,SAAS,CAACe,GAAG,CAACjB,MAAM,EAAEgB,KAAK,CAAC;MAC5B,OAAOd,SAAS;IAClB,CAAC,CAAC;EACJ,CAAC,EACD,EACF,CAAC;EAED,MAAMgB,aAA4B,GAAG7B,QAAQ,KAAK,QAAQ,GACtD;IAAE8B,IAAI,EAAE,QAAQ;IAAE3B,QAAQ,EAAE;EAAK,CAAC,GAClC;IAAE2B,IAAI,EAAE,QAAQ;IAAE3B,QAAQ;IAAEC;EAAU,CAAC;EAE3C,OAAO;IACLC,SAAS;IACT0B,UAAU,EAAEhB,cAAc;IAC1Bb,aAAa,EAAEA,aAAa,GAAGoB,iBAAiB,GAAGU,SAAS;IAC5DX,UAAU;IACVQ,aAAa;IACbH,qBAAqB;IACrBnB,gBAAgB;IAChBG;EACF,CAAC;AACH","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["types.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport interface ColumnOption {\n id: string;\n name: string;\n canSort: boolean;\n}\n\nexport interface CellIdentifier {\n rowId: string;\n columnId: string;\n}\n\nexport interface CellEditInfo<\n TData extends RowData = unknown,\n CellValue = unknown,\n> extends CellIdentifier {\n newValue: CellValue;\n oldValue: CellValue;\n originalRowData: TData;\n}\n\nexport type EditMode =\n | { type: \"always\"; isActive: true }\n | { type: \"manual\"; isActive: boolean; setActive: (value: boolean) => void };\n\nexport interface EditableConfig<\n TData extends RowData = unknown,\n CellValue = unknown,\n> {\n cellEdits: Record<string, CellEditInfo<TData, CellValue>>;\n onCellEdit: (\n cellId: string,\n info: CellEditInfo<TData, CellValue>,\n ) => void;\n onSubmitEdits?: () => Promise<boolean>;\n clearEdits: () => void;\n editMode: EditMode;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["types.ts"],"sourcesContent":["/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { RowData } from \"@tanstack/react-table\";\n\nexport interface ColumnOption {\n id: string;\n name: string;\n canSort: boolean;\n}\n\nexport interface CellIdentifier {\n rowId: string;\n columnId: string;\n}\n\nexport interface CellEditInfo<\n TData extends RowData = unknown,\n CellValue = unknown,\n> extends CellIdentifier {\n newValue: CellValue | null;\n oldValue: CellValue | null;\n originalRowData: TData;\n}\n\nexport type EditModeState =\n | { type: \"always\"; isActive: true }\n | { type: \"manual\"; isActive: boolean; setActive: (value: boolean) => void };\n\nexport interface EditableConfig<\n TData extends RowData = unknown,\n CellValue = unknown,\n> {\n cellEdits: Record<string, CellEditInfo<TData, CellValue>>;\n onCellEdit: (\n cellId: string,\n info: CellEditInfo<TData, CellValue>,\n ) => void;\n onSubmitEdits?: () => Promise<boolean>;\n clearEdits: () => void;\n editModeState: EditModeState;\n onCellValidationError: (\n cellId: string,\n error: string,\n ) => void;\n validationErrors: Map<string, string>;\n clearCellValidationError: (cellId: string) => void;\n}\n"],"mappings":"","ignoreList":[]}
@@ -14,7 +14,10 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- export { FilterList } from "../filter-list/base/FilterList.js";
17
+ export { BaseFilterList } from "../filter-list/base/BaseFilterList.js";
18
+ export { FilterList } from "../filter-list/FilterList.js";
19
+ export { deserializeFilterStates, serializeFilterStates } from "../filter-list/utils/filterStateSerialization.js";
20
+
18
21
  // ObjectTable that loads and displays data for a given objectSet
19
22
  export { ObjectTable } from "../object-table/ObjectTable.js";
20
23
 
@@ -1 +1 @@
1
- {"version":3,"file":"experimental.js","names":["FilterList","ObjectTable","BaseTable","ColumnConfigDialog"],"sources":["experimental.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 { FilterList } from \"../filter-list/base/FilterList.js\";\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../filter-list/FilterListItemApi.js\";\n\n// ObjectTable that loads and displays data for a given objectSet\nexport { ObjectTable } from \"../object-table/ObjectTable.js\";\nexport type {\n ColumnDefinition,\n ColumnDefinitionLocator,\n ObjectTableProps,\n} from \"../object-table/ObjectTableApi.js\";\nexport type { CellEditInfo } from \"../object-table/utils/types.js\";\n\n// BaseTable that does not handle data fetching\nexport type { BaseTableProps } from \"../object-table/Table.js\";\nexport { BaseTable } from \"../object-table/Table.js\";\n\nexport { ColumnConfigDialog } from \"../object-table/ColumnConfigDialog.js\";\nexport type {\n ColumnConfigDialogProps,\n ColumnConfigOptions,\n} from \"../object-table/ColumnConfigDialog.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,mCAAmC;AAY9D;AACA,SAASC,WAAW,QAAQ,gCAAgC;;AAQ5D;;AAEA,SAASC,SAAS,QAAQ,0BAA0B;AAEpD,SAASC,kBAAkB,QAAQ,uCAAuC","ignoreList":[]}
1
+ {"version":3,"file":"experimental.js","names":["BaseFilterList","FilterList","deserializeFilterStates","serializeFilterStates","ObjectTable","BaseTable","ColumnConfigDialog"],"sources":["experimental.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 \"../filter-list/base/BaseFilterList.js\";\nexport type {\n BaseFilterListProps,\n RenderFilterInput,\n} from \"../filter-list/base/BaseFilterListApi.js\";\nexport { FilterList } from \"../filter-list/FilterList.js\";\n\nexport type {\n FilterDefinitionUnion,\n FilterListProps,\n} from \"../filter-list/FilterListApi.js\";\nexport type {\n FilterComponentType,\n FilterListItemProps,\n FilterState,\n PropertyFilterDefinition,\n} from \"../filter-list/FilterListItemApi.js\";\nexport {\n deserializeFilterStates,\n serializeFilterStates,\n} from \"../filter-list/utils/filterStateSerialization.js\";\n\n// ObjectTable that loads and displays data for a given objectSet\nexport { ObjectTable } from \"../object-table/ObjectTable.js\";\nexport type {\n ColumnDefinition,\n ColumnDefinitionLocator,\n ObjectTableProps,\n} from \"../object-table/ObjectTableApi.js\";\nexport type { CellEditInfo } from \"../object-table/utils/types.js\";\n\n// BaseTable that does not handle data fetching\nexport type { BaseTableProps } from \"../object-table/Table.js\";\nexport { BaseTable } from \"../object-table/Table.js\";\n\nexport { ColumnConfigDialog } from \"../object-table/ColumnConfigDialog.js\";\nexport type {\n ColumnConfigDialogProps,\n ColumnConfigOptions,\n} from \"../object-table/ColumnConfigDialog.js\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,cAAc,QAAQ,uCAAuC;AAKtE,SAASC,UAAU,QAAQ,8BAA8B;AAYzD,SACEC,uBAAuB,EACvBC,qBAAqB,QAChB,kDAAkD;;AAEzD;AACA,SAASC,WAAW,QAAQ,gCAAgC;;AAQ5D;;AAEA,SAASC,SAAS,QAAQ,0BAA0B;AAEpD,SAASC,kBAAkB,QAAQ,uCAAuC","ignoreList":[]}
@@ -18,34 +18,34 @@
18
18
  display: flex;
19
19
  flex-direction: column;
20
20
  align-items: flex-start;
21
- gap: var(--osdk-filter-error-gap, 8px);
22
- padding: var(--osdk-filter-error-padding, 8px);
23
- border-radius: var(--osdk-filter-error-border-radius, 4px);
24
- background-color: var(--osdk-filter-error-bg, color-mix(in srgb, var(--osdk-intent-danger-rest, #c23030) 5%, transparent));
21
+ gap: var(--osdk-error-boundary-gap, 8px);
22
+ padding: var(--osdk-error-boundary-padding, 8px);
23
+ border-radius: var(--osdk-error-boundary-border-radius, 4px);
24
+ background-color: var(--osdk-error-boundary-bg, color-mix(in srgb, var(--osdk-intent-danger-rest, #c23030) 5%, transparent));
25
25
  }
26
26
 
27
27
  .errorMessage {
28
28
  margin: 0;
29
- font-size: var(--osdk-filter-error-font-size, 13px);
30
- color: var(--osdk-filter-error-text-color, var(--osdk-intent-danger-rest, #c23030));
29
+ font-size: var(--osdk-error-boundary-font-size, 13px);
30
+ color: var(--osdk-error-boundary-text-color, var(--osdk-intent-danger-rest, #c23030));
31
31
  }
32
32
 
33
33
  .retryButton {
34
- padding: var(--osdk-filter-error-button-padding, 4px 8px);
35
- border: 1px solid var(--osdk-filter-error-button-border-color, currentColor);
36
- border-radius: var(--osdk-filter-error-button-border-radius, 3px);
34
+ padding: var(--osdk-error-boundary-button-padding, 4px 8px);
35
+ border: var(--osdk-surface-border-width, 1px) solid var(--osdk-error-boundary-button-border-color, currentColor);
36
+ border-radius: var(--osdk-error-boundary-button-border-radius, 3px);
37
37
  background: transparent;
38
- font-size: var(--osdk-filter-error-button-font-size, 12px);
39
- color: var(--osdk-filter-error-button-color, inherit);
38
+ font-size: var(--osdk-error-boundary-button-font-size, 12px);
39
+ color: var(--osdk-error-boundary-button-color, inherit);
40
40
  cursor: pointer;
41
- transition: background-color 150ms ease;
41
+ transition: background-color var(--osdk-filter-input-transition, 150ms ease);
42
42
 
43
43
  &:hover {
44
- background-color: var(--osdk-filter-error-button-hover-bg, color-mix(in srgb, currentColor 5%, transparent));
44
+ background-color: var(--osdk-error-boundary-button-hover-bg, color-mix(in srgb, currentColor 5%, transparent));
45
45
  }
46
46
 
47
47
  &:focus-visible {
48
- outline: var(--osdk-filter-input-focus-outline-width, 2px) solid var(--osdk-filter-input-focus-outline-color, currentColor);
48
+ outline: var(--osdk-filter-input-focus-outline-width, 2px) solid var(--osdk-filter-input-focus-outline-color, rgba(45, 114, 210, 0.6));
49
49
  outline-offset: var(--osdk-filter-input-focus-outline-offset, 2px);
50
50
  }
51
51
 
@@ -0,0 +1,31 @@
1
+ import { Tooltip as BaseUITooltip, type TooltipPopupProps, type TooltipPositionerProps, type TooltipProviderProps, type TooltipRootProps, type TooltipTriggerProps } from "@base-ui/react/tooltip";
2
+ import React from "react";
3
+ export interface TooltipProps extends Omit<TooltipRootProps, "className"> {}
4
+ declare function TooltipRoot({ children,...rest }: TooltipProps): React.ReactElement;
5
+ interface TooltipProviderComponentProps extends Omit<TooltipProviderProps, "className"> {
6
+ className?: string;
7
+ }
8
+ declare function TooltipProvider({ children,...rest }: TooltipProviderComponentProps): React.ReactElement;
9
+ interface TooltipTriggerComponentProps extends Omit<TooltipTriggerProps, "className"> {
10
+ className?: string;
11
+ }
12
+ declare function TooltipTrigger({ className, children,...rest }: TooltipTriggerComponentProps): React.ReactElement;
13
+ interface TooltipPositionerComponentProps extends Omit<TooltipPositionerProps, "className"> {
14
+ className?: string;
15
+ }
16
+ declare function TooltipPositioner({ className, children, sideOffset,...rest }: TooltipPositionerComponentProps): React.ReactElement;
17
+ interface TooltipPopupComponentProps extends Omit<TooltipPopupProps, "className"> {
18
+ className?: string;
19
+ }
20
+ declare function TooltipPopup({ className, children,...rest }: TooltipPopupComponentProps): React.ReactElement;
21
+ export declare function TooltipArrow(): React.ReactElement;
22
+ export declare const Tooltip: {
23
+ Root: typeof TooltipRoot
24
+ Provider: typeof TooltipProvider
25
+ Trigger: typeof TooltipTrigger
26
+ Portal: typeof BaseUITooltip.Portal
27
+ Positioner: typeof TooltipPositioner
28
+ Popup: typeof TooltipPopup
29
+ Arrow: typeof TooltipArrow
30
+ };
31
+ export {};
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,SACE,WAAW,oBACN,wBACA,6BACA,2BACA,uBACA,2BACA,wBAAyB;AAEhC,OAAO,WAAW,OAAQ;AAG1B,iBAAiB,qBAAqB,KAAK,kBAAkB,aAAa,CAAE;AAE5E,iBAAS,YAAY,EACnB,SACA,GAAG,MACU,EAAZ,eAAe,MAAM;UAQd,sCACA,KAAK,sBAAsB,aACrC;CACE;AACD;AAED,iBAAS,gBAAgB,EACvB,SACA,GAAG,MAC2B,EAA7B,gCAAgC,MAAM;UAU/B,qCACA,KAAK,qBAAqB,aACpC;CACE;AACD;AAED,iBAAS,eAAe,EACtB,WACA,SACA,GAAG,MAC0B,EAA5B,+BAA+B,MAAM;UAW9B,wCACA,KAAK,wBAAwB,aACvC;CACE;AACD;AAED,iBAAS,kBAAkB,EACzB,WACA,UACA,WACA,GAAG,MAC6B,EAA/B,kCAAkC,MAAM;UAYjC,mCACA,KAAK,mBAAmB,aAClC;CACE;AACD;AAED,iBAAS,aAAa,EACpB,WACA,SACA,GAAG,MACwB,EAA1B,6BAA6B,MAAM;AAWtC,OAAO,iBAAS,gBAAgB,MAAM;AAuBtC,OAAO,cAAMA,SAAS;CACpB,aAAa;CACb,iBAAiB;CACjB,gBAAgB;CAChB,eAAe,cAAc;CAC7B,mBAAmB;CACnB,cAAc;CACd,cAAc;AACf","names":["Tooltip: {\n Root: typeof TooltipRoot;\n Provider: typeof TooltipProvider;\n Trigger: typeof TooltipTrigger;\n Portal: typeof BaseUITooltip.Portal;\n Positioner: typeof TooltipPositioner;\n Popup: typeof TooltipPopup;\n Arrow: typeof TooltipArrow;\n}"],"sources":["../../../../src/base-components/tooltip/Tooltip.tsx"],"version":3,"file":"Tooltip.d.ts"}
@@ -0,0 +1 @@
1
+ export { Tooltip, TooltipArrow, type TooltipProps } from "./Tooltip.js";
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,SAAS,SAAS,mBAAmB,oBAAoB","names":[],"sources":["../../../../src/base-components/tooltip/index.ts"],"version":3,"file":"index.d.ts"}
@@ -1,7 +1,7 @@
1
1
  import type { ObjectSet, ObjectTypeDefinition, WhereClause } from "@osdk/api";
2
2
  import React from "react";
3
- import type { FilterDefinitionUnion } from "../FilterListApi.js";
4
- import type { FilterState } from "../FilterListItemApi.js";
3
+ import type { FilterDefinitionUnion } from "./FilterListApi.js";
4
+ import type { FilterState } from "./FilterListItemApi.js";
5
5
  interface FilterInputProps<Q extends ObjectTypeDefinition> {
6
6
  objectType: Q;
7
7
  objectSet: ObjectSet<Q>;
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cAAc,WAAW,sBAAsB,mBAAmB,WAAY;AAC9E,OAAO,WAAkC,OAAQ;AAGjD,cAAc,6BAA6B,oBAAqB;AAChE,cAAc,mBAAmB,wBAAyB;UAIhD,iBAAiB,UAAU,sBAAsB;CACzD,YAAY;CACZ,WAAW,UAAU;CACrB,YAAY,sBAAsB;CAClC,aAAa;CACb,uBAAuBA,OAAO;CAC9B,aAAa,YAAY;AAC1B;AAED,iBAAS,iBAAiB,UAAU,sBAAsB,EACxD,YACA,WACA,YACA,aACA,sBACA,aACoB,EAAnB,iBAAiB,KAAK,MAAM;AAa/B,OAAO,cAAM,oBAA+C","names":["state: FilterState"],"sources":["../../../src/filter-list/FilterInput.tsx"],"version":3,"file":"FilterInput.d.ts"}
@@ -1,4 +1,4 @@
1
1
  import type { ObjectTypeDefinition } from "@osdk/api";
2
2
  import React from "react";
3
- import type { FilterListProps } from "../FilterListApi.js";
3
+ import type { FilterListProps } from "./FilterListApi.js";
4
4
  export declare function FilterList<Q extends ObjectTypeDefinition>(props: FilterListProps<Q>): React.ReactElement;
@@ -0,0 +1 @@
1
+ {"mappings":"AAgBA,cAAc,4BAAyC,WAAY;AACnE,OAAO,WAAqC,OAAQ;AAIpD,cAEE,uBACK,oBAAqB;AAK5B,OAAO,iBAAS,WAAW,UAAU,sBACnCA,OAAO,gBAAgB,KACtB,MAAM","names":["props: FilterListProps<Q>"],"sources":["../../../src/filter-list/FilterList.tsx"],"version":3,"file":"FilterList.d.ts"}
@@ -94,6 +94,20 @@ export interface FilterListProps<Q extends ObjectTypeDefinition> {
94
94
  */
95
95
  enableSorting?: boolean;
96
96
  /**
97
+ * Whether the filter list panel is collapsed
98
+ */
99
+ collapsed?: boolean;
100
+ /**
101
+ * Called when the collapsed state changes
102
+ */
103
+ onCollapsedChange?: (collapsed: boolean) => void;
104
+ /**
105
+ * Initial filter states for hydrating from external storage.
106
+ * These states are merged over definition defaults on mount.
107
+ * Use onFilterStateChanged to persist state changes externally.
108
+ */
109
+ initialFilterStates?: Map<string, FilterStateType>;
110
+ /**
97
111
  * Show reset filters button in header
98
112
  */
99
113
  showResetButton?: boolean;
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,WACA,WACA,sBACA,mBACK,WAAY;AACnB,YAAY,WAAW,OAAQ;AAC/B,cACE,eAAe,iBACf,gCACK,wBAAyB;AAChC,cAAc,8BAA8B,gCAAiC;AAC7E,cAAc,qCAAqC,+BAAgC;AACnF,cACE,yBACA,sCACK,8BAA+B;;;;AAKtC,YAAY,sBAAsB,UAAU,wBACxC,yBAAyB,KACzB,wBAAwB,KACxB,+BAA+B,GAAG,UAAU,MAC5C,8BAA8B,KAC9B,uBAAuB;;;;AAK3B,YAAY,UAAU,UAAU,wBAC9B,sBAAsB,iBAAiB,IAAI,UAAU;CAAE,WAAW;AAAG,IAAG,IACpE,UAAU;CAAE,gBAAgB;AAAG,IAAG;;;;AAOxC,YAAY,YAAY,UAAU,wBAChC,sBAAsB,iBAAiB,IACnC,UAAU;CAAE,mBAAmB;AAAG,IAAG;;;;;AAQ3C,YAAY,gBAAgB,UAAU,wBAAwB,IAC5D,sBAAsB,IACtB;AAGF,iBAAiB,gBAAgB,UAAU,sBAAsB;;;;CAI/D,WAAW,UAAU;;;;CAKrB;;;;CAKA,YAAY,MAAM;;;;;CAMlB,oBAAoB,MAAM,sBAAsB;;;;;CAMhD,eAAe,YAAY;;;;;;;;CAS3B,yBAAyBA,WAAW,YAAY;;;;;;CAOhD,iBAAiB,QAAQ;;;;;;;CAQzB,wBACEC,YAAY,sBAAsB,IAClCC,UAAU;;;;;;;;CAUZ,iBACEC,WAAW,UAAU,IACrBC,gBAAgB,MAAM,sBAAsB;;;;;;;CAS9C,mBAAmBD,WAAW,UAAU;;;;;;;CAQxC;;;;CAKA;;;;CAKA;;;;CAKA;;;;CAKA;;;;;CAMA,8BAA8B,MAAM;AACrC","names":["newClause: WhereClause<Q>","definition: FilterDefinitionUnion<Q>","newState: FilterStateType","filterKey: FilterKey<Q>","newDefinitions: Array<FilterDefinitionUnion<Q>>"],"sources":["../../../src/filter-list/FilterListApi.ts"],"version":3,"file":"FilterListApi.d.ts"}
1
+ {"mappings":"AAgBA,cACE,WACA,WACA,sBACA,mBACK,WAAY;AACnB,YAAY,WAAW,OAAQ;AAC/B,cACE,eAAe,iBACf,gCACK,wBAAyB;AAChC,cAAc,8BAA8B,gCAAiC;AAC7E,cAAc,qCAAqC,+BAAgC;AACnF,cACE,yBACA,sCACK,8BAA+B;;;;AAKtC,YAAY,sBAAsB,UAAU,wBACxC,yBAAyB,KACzB,wBAAwB,KACxB,+BAA+B,GAAG,UAAU,MAC5C,8BAA8B,KAC9B,uBAAuB;;;;AAK3B,YAAY,UAAU,UAAU,wBAC9B,sBAAsB,iBAAiB,IAAI,UAAU;CAAE,WAAW;AAAG,IAAG,IACpE,UAAU;CAAE,gBAAgB;AAAG,IAAG;;;;AAOxC,YAAY,YAAY,UAAU,wBAChC,sBAAsB,iBAAiB,IACnC,UAAU;CAAE,mBAAmB;AAAG,IAAG;;;;;AAQ3C,YAAY,gBAAgB,UAAU,wBAAwB,IAC5D,sBAAsB,IACtB;AAGF,iBAAiB,gBAAgB,UAAU,sBAAsB;;;;CAI/D,WAAW,UAAU;;;;CAKrB;;;;CAKA,YAAY,MAAM;;;;;CAMlB,oBAAoB,MAAM,sBAAsB;;;;;CAMhD,eAAe,YAAY;;;;;;;;CAS3B,yBAAyBA,WAAW,YAAY;;;;;;CAOhD,iBAAiB,QAAQ;;;;;;;CAQzB,wBACEC,YAAY,sBAAsB,IAClCC,UAAU;;;;;;;;CAUZ,iBACEC,WAAW,UAAU,IACrBC,gBAAgB,MAAM,sBAAsB;;;;;;;CAS9C,mBAAmBD,WAAW,UAAU;;;;;;;CAQxC;;;;CAKA;;;;CAKA,qBAAqBE;;;;;;CAOrB,sBAAsB,YAAY;;;;CAKlC;;;;CAKA;;;;CAKA;;;;CAKA;;;;;CAMA,8BAA8B,MAAM;AACrC","names":["newClause: WhereClause<Q>","definition: FilterDefinitionUnion<Q>","newState: FilterStateType","filterKey: FilterKey<Q>","newDefinitions: Array<FilterDefinitionUnion<Q>>","collapsed: boolean"],"sources":["../../../src/filter-list/FilterListApi.ts"],"version":3,"file":"FilterListApi.d.ts"}
@@ -149,6 +149,19 @@ export interface PropertyFilterDefinition<
149
149
  */
150
150
  filterState: FilterStateByComponentType[C];
151
151
  /**
152
+ * Maps filter values to colors for visual differentiation.
153
+ * Used by CHECKBOX_LIST (color dots) and LISTOGRAM (per-row bar colors).
154
+ */
155
+ colorMap?: Record<string, string>;
156
+ /**
157
+ * Configuration for LISTOGRAM display mode.
158
+ * Only applies when filterComponent is "LISTOGRAM".
159
+ */
160
+ listogramConfig?: {
161
+ displayMode?: "full" | "count" | "minimal"
162
+ maxVisibleItems?: number
163
+ };
164
+ /**
152
165
  * Controls whether this filter is rendered.
153
166
  * When false, the filter is hidden but its state is preserved.
154
167
  * @default true
@@ -1 +1 @@
1
- {"mappings":"AAgBA,cACE,qBACA,WACA,sBACA,cACA,yBACK,WAAY;AACnB,cAAc,yBAAyB,gCAAiC;AACxE,cAAc,gCAAgC,+BAAgC;AAC9E,cACE,oBACA,iCACK,8BAA+B;;;;AAKtC,YAAY;CACV,UAAU;CACV,UAAU,aAAa;IACrB,oBAAoB,GAAG,cAAc,GAAG;;;;AAK5C,YAAY,sBACR,cACA,eACA,iBACA,cACA,kBACA,kBACA,iBACA,gBACA,eACA,aACA,kBACA;;;;AAKJ,YAAY,+BAA+B,UAAU,qBACnD,UAAU,YACN,cAAc,kBAAkB,kBAAkB,WAClD,UAAU,WACN,cACA,cACA,kBACA,kBACA,iBACA,kBACJ,UAAU,aAAa,cACrB,eAAe,gBAAgB,eAAe,aAChD,UACE,WACA,YACA,SACA,UACA,UACA,SACA,YAAY,iBAAiB,kBAAkB;;;;AAMvD,YAAY,cACR,0CACA,uBACA,0BACA,yBACA,+CACA,kBAAkB,QAClB,sBACA,oBACA,qBACA,4BACA,2BACA;;;;AAKJ,iBAAiB,2BAA2B;CAC1C,WAAW;CACX,YAAY;CACZ,WAAW;CACX,eAAe;CACf,cAAc;CACd,eAAe;CACf,cAAc;CACd,aAAa,kBAAkB;CAC/B,YAAY,kBAAkB;CAC9B,UAAU;CACV,eAAe;CACf,QAAQ;AACT;;;;AAKD,YAAY,kBACR,gBACA,eACA,iBACA,kBACA,WACA,aACA,WACA,YACA,mBACA,kBACA;;;;;AAMJ,iBAAiB,gBAAgB;;;;CAI/B,MAAM;;;;;CAMN;;;;;CAMA;AACD;AAED,iBAAiB,sBAAsB,8BAC7B,gBACV;CACE,MAAM;CACN,QAAQ;AACT;AAED,iBAAiB,6BAA6B,gBAAgB;CAC5D,MAAM;;;;CAIN,WAAW;;;;CAIX,WAAW;AACZ;AAED,iBAAiB,gCAAgC,gBAAgB;CAC/D,MAAM;CACN;AACD;AAED,iBAAiB,+BAA+B,gBAAgB;CAC9D,MAAM;;;;CAIN;;;;CAIA;AACD;;;;;AAMD,iBAAiB,kBAAkB,gCAAgC,cACzD,gBACV;CACE,MAAM;CACN,gBAAgB;AACjB;AAED,iBAAiB,4BAA4B,gBAAgB;CAC3D,MAAM;CACN,YAAY;CACZ,UAAU;CACV,cAAc,QAAQ,SAAS,UAAU,YAAY;AACtD;AAED,iBAAiB,0BAA0B,gBAAgB;CACzD,MAAM;CACN;AACD;;;;;;;;AASD,iBAAiB;CACf,UAAU;CACV,UAAU,aAAa,KAAK,aAAa;CACzC,UAAU,+BACR,oBAAoB,GAAG,MACrB,+BAA+B,oBAAoB,GAAG;EAC1D;;;;CAIA,MAAM;;;;CAKN;;;;CAKA,KAAK;;;;CAKL;;;;;CAMA,iBAAiB;;;;;CAMjB,aAAa,2BAA2B;;;;;;CAOxC;AACD;;;;;AAMD,iBAAiB;CACf,UAAU;CACV,UAAU,aAAa,KAAK,aAAa;CACzC,UAAU,+BACR,oBAAoB,GAAG,MACrB,+BAA+B,oBAAoB,GAAG;UAClD,yBAAyB,GAAG,GAAG,GAAG;CAC1C,WAAW,UAAU;;;;;CAMrB,uBAAuBA,OAAO,2BAA2B;CAEzD,mBAAmBC,KAAK,aAAa;AACtC","names":["state: FilterStateByComponentType[C]","key: PropertyKeys<Q>"],"sources":["../../../src/filter-list/FilterListItemApi.ts"],"version":3,"file":"FilterListItemApi.d.ts"}
1
+ {"mappings":"AAgBA,cACE,qBACA,WACA,sBACA,cACA,yBACK,WAAY;AACnB,cAAc,yBAAyB,gCAAiC;AACxE,cAAc,gCAAgC,+BAAgC;AAC9E,cACE,oBACA,iCACK,8BAA+B;;;;AAKtC,YAAY;CACV,UAAU;CACV,UAAU,aAAa;IACrB,oBAAoB,GAAG,cAAc,GAAG;;;;AAK5C,YAAY,sBACR,cACA,eACA,iBACA,cACA,kBACA,kBACA,iBACA,gBACA,eACA,aACA,kBACA;;;;AAKJ,YAAY,+BAA+B,UAAU,qBACnD,UAAU,YACN,cAAc,kBAAkB,kBAAkB,WAClD,UAAU,WACN,cACA,cACA,kBACA,kBACA,iBACA,kBACJ,UAAU,aAAa,cACrB,eAAe,gBAAgB,eAAe,aAChD,UACE,WACA,YACA,SACA,UACA,UACA,SACA,YAAY,iBAAiB,kBAAkB;;;;AAMvD,YAAY,cACR,0CACA,uBACA,0BACA,yBACA,+CACA,kBAAkB,QAClB,sBACA,oBACA,qBACA,4BACA,2BACA;;;;AAKJ,iBAAiB,2BAA2B;CAC1C,WAAW;CACX,YAAY;CACZ,WAAW;CACX,eAAe;CACf,cAAc;CACd,eAAe;CACf,cAAc;CACd,aAAa,kBAAkB;CAC/B,YAAY,kBAAkB;CAC9B,UAAU;CACV,eAAe;CACf,QAAQ;AACT;;;;AAKD,YAAY,kBACR,gBACA,eACA,iBACA,kBACA,WACA,aACA,WACA,YACA,mBACA,kBACA;;;;;AAMJ,iBAAiB,gBAAgB;;;;CAI/B,MAAM;;;;;CAMN;;;;;CAMA;AACD;AAED,iBAAiB,sBAAsB,8BAC7B,gBACV;CACE,MAAM;CACN,QAAQ;AACT;AAED,iBAAiB,6BAA6B,gBAAgB;CAC5D,MAAM;;;;CAIN,WAAW;;;;CAIX,WAAW;AACZ;AAED,iBAAiB,gCAAgC,gBAAgB;CAC/D,MAAM;CACN;AACD;AAED,iBAAiB,+BAA+B,gBAAgB;CAC9D,MAAM;;;;CAIN;;;;CAIA;AACD;;;;;AAMD,iBAAiB,kBAAkB,gCAAgC,cACzD,gBACV;CACE,MAAM;CACN,gBAAgB;AACjB;AAED,iBAAiB,4BAA4B,gBAAgB;CAC3D,MAAM;CACN,YAAY;CACZ,UAAU;CACV,cAAc,QAAQ,SAAS,UAAU,YAAY;AACtD;AAED,iBAAiB,0BAA0B,gBAAgB;CACzD,MAAM;CACN;AACD;;;;;;;;AASD,iBAAiB;CACf,UAAU;CACV,UAAU,aAAa,KAAK,aAAa;CACzC,UAAU,+BACR,oBAAoB,GAAG,MACrB,+BAA+B,oBAAoB,GAAG;EAC1D;;;;CAIA,MAAM;;;;CAKN;;;;CAKA,KAAK;;;;CAKL;;;;;CAMA,iBAAiB;;;;;CAMjB,aAAa,2BAA2B;;;;;CAMxC,WAAW;;;;;CAMX,kBAAkB;EAChB,cAAc,SAAS,UAAU;EACjC;CACD;;;;;;CAOD;AACD;;;;;AAMD,iBAAiB;CACf,UAAU;CACV,UAAU,aAAa,KAAK,aAAa;CACzC,UAAU,+BACR,oBAAoB,GAAG,MACrB,+BAA+B,oBAAoB,GAAG;UAClD,yBAAyB,GAAG,GAAG,GAAG;CAC1C,WAAW,UAAU;;;;;CAMrB,uBAAuBA,OAAO,2BAA2B;CAEzD,mBAAmBC,KAAK,aAAa;AACtC","names":["state: FilterStateByComponentType[C]","key: PropertyKeys<Q>"],"sources":["../../../src/filter-list/FilterListItemApi.ts"],"version":3,"file":"FilterListItemApi.d.ts"}
@@ -0,0 +1,3 @@
1
+ import React from "react";
2
+ import type { BaseFilterListProps } from "./BaseFilterListApi.js";
3
+ export declare function BaseFilterList<D>(props: BaseFilterListProps<D>): React.ReactElement;