@itwin/components-react 4.8.3 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/lib/cjs/components-react/UiComponents.d.ts.map +1 -1
  3. package/lib/cjs/components-react/UiComponents.js +1 -0
  4. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  5. package/lib/cjs/components-react/common/DelayedSpinner.d.ts +2 -2
  6. package/lib/cjs/components-react/common/DelayedSpinner.d.ts.map +1 -1
  7. package/lib/cjs/components-react/common/HighlightedText.d.ts +2 -2
  8. package/lib/cjs/components-react/common/HighlightedText.d.ts.map +1 -1
  9. package/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
  10. package/lib/cjs/components-react/common/ImageRenderer.js +1 -0
  11. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  12. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  13. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js +1 -0
  14. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  15. package/lib/cjs/components-react/datepicker/DateField.d.ts +2 -2
  16. package/lib/cjs/components-react/datepicker/DateField.d.ts.map +1 -1
  17. package/lib/cjs/components-react/datepicker/DatePicker.d.ts +2 -2
  18. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  19. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  20. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  21. package/lib/cjs/components-react/datepicker/TimeField.d.ts +2 -2
  22. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  23. package/lib/cjs/components-react/editors/BooleanEditor.d.ts +1 -1
  24. package/lib/cjs/components-react/editors/EditorContainer.d.ts +1 -1
  25. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  26. package/lib/cjs/components-react/editors/EnumEditor.d.ts +1 -1
  27. package/lib/cjs/components-react/editors/IconEditor.d.ts +1 -1
  28. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  29. package/lib/cjs/components-react/editors/PopupButton.d.ts +2 -2
  30. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  31. package/lib/cjs/components-react/editors/ToggleEditor.d.ts +1 -1
  32. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  33. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  34. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  35. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  36. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +3 -7
  37. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +1 -73
  41. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  42. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  43. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  44. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js +30 -0
  45. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  46. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  47. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  48. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js +76 -0
  49. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  50. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  51. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  52. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +16 -12
  53. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  54. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +38 -29
  55. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  56. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  57. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -40
  58. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  59. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  60. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  61. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  62. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +43 -6
  63. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  64. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  65. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  66. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  67. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  68. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  69. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  70. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +40 -2
  71. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  72. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  73. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +151 -44
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js +30 -0
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  80. package/lib/cjs/components-react/filter-builder/Operators.d.ts +24 -19
  81. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  82. package/lib/cjs/components-react/filter-builder/Operators.js +40 -64
  83. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  84. package/lib/cjs/components-react/filter-builder/Types.d.ts +2 -2
  85. package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
  86. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  87. package/lib/cjs/components-react/filtering/FilteringInput.d.ts +1 -1
  88. package/lib/cjs/components-react/filtering/ResultSelector.d.ts +1 -1
  89. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  90. package/lib/cjs/components-react/properties/LinkHandler.d.ts +1 -1
  91. package/lib/cjs/components-react/properties/LinkHandler.d.ts.map +1 -1
  92. package/lib/cjs/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  93. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  94. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  95. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  96. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts +1 -1
  97. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  98. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  99. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  100. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  101. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  102. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  103. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  104. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  105. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  106. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  107. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  108. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  109. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  110. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  111. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  112. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  113. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  114. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  115. package/lib/cjs/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  116. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  117. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  118. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  119. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +42 -10
  120. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  121. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts +12 -0
  122. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js +22 -1
  124. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  126. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts +2 -2
  127. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  128. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  129. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  130. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts +1 -1
  131. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  132. package/lib/cjs/components-react/toolbar/Items.d.ts +1 -1
  133. package/lib/cjs/components-react/toolbar/Items.d.ts.map +1 -1
  134. package/lib/cjs/components-react/toolbar/Overflow.d.ts +1 -1
  135. package/lib/cjs/components-react/toolbar/Overflow.d.ts.map +1 -1
  136. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts +1 -1
  137. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  138. package/lib/cjs/components-react/toolbar/PopupItem.d.ts +2 -2
  139. package/lib/cjs/components-react/toolbar/PopupItem.d.ts.map +1 -1
  140. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  141. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  142. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  143. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  144. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +1 -1
  145. package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
  146. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  147. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  148. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  149. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  150. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  151. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  152. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  153. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  154. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  155. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  156. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  157. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  158. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  159. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  160. package/lib/cjs/components-react/tree/controlled/TreeHooks.js +22 -1
  161. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  162. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +1 -0
  163. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  164. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  165. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  166. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  167. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  168. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  169. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  170. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  171. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  172. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  173. package/lib/cjs/components-react.d.ts +3 -0
  174. package/lib/cjs/components-react.d.ts.map +1 -1
  175. package/lib/cjs/components-react.js +3 -0
  176. package/lib/cjs/components-react.js.map +1 -1
  177. package/lib/esm/components-react/UiComponents.d.ts.map +1 -1
  178. package/lib/esm/components-react/UiComponents.js +1 -0
  179. package/lib/esm/components-react/UiComponents.js.map +1 -1
  180. package/lib/esm/components-react/common/DelayedSpinner.d.ts +2 -2
  181. package/lib/esm/components-react/common/DelayedSpinner.d.ts.map +1 -1
  182. package/lib/esm/components-react/common/HighlightedText.d.ts +2 -2
  183. package/lib/esm/components-react/common/HighlightedText.d.ts.map +1 -1
  184. package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
  185. package/lib/esm/components-react/common/ImageRenderer.js +1 -0
  186. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  187. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  188. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js +1 -0
  189. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  190. package/lib/esm/components-react/datepicker/DateField.d.ts +2 -2
  191. package/lib/esm/components-react/datepicker/DateField.d.ts.map +1 -1
  192. package/lib/esm/components-react/datepicker/DatePicker.d.ts +2 -2
  193. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  194. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  195. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  196. package/lib/esm/components-react/datepicker/TimeField.d.ts +2 -2
  197. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  198. package/lib/esm/components-react/editors/BooleanEditor.d.ts +1 -1
  199. package/lib/esm/components-react/editors/EditorContainer.d.ts +1 -1
  200. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  201. package/lib/esm/components-react/editors/EnumEditor.d.ts +1 -1
  202. package/lib/esm/components-react/editors/IconEditor.d.ts +1 -1
  203. package/lib/esm/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  204. package/lib/esm/components-react/editors/PopupButton.d.ts +2 -2
  205. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  206. package/lib/esm/components-react/editors/ToggleEditor.d.ts +1 -1
  207. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  208. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  209. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  210. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  211. package/lib/esm/components-react/filter-builder/FilterBuilder.js +4 -8
  212. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  213. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  214. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  215. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +0 -71
  216. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  217. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  218. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  219. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js +23 -0
  220. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  221. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  222. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  223. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js +73 -0
  224. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  225. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  226. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  227. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +20 -16
  228. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  229. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +38 -29
  230. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  231. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  232. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +17 -42
  233. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  234. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  235. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  236. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  237. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +41 -5
  238. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  239. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  240. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  241. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  242. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  243. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  244. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  245. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +39 -1
  246. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  247. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  248. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  249. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +149 -42
  250. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  251. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  252. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  253. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js +23 -0
  254. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  255. package/lib/esm/components-react/filter-builder/Operators.d.ts +24 -19
  256. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  257. package/lib/esm/components-react/filter-builder/Operators.js +37 -61
  258. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  259. package/lib/esm/components-react/filter-builder/Types.d.ts +2 -2
  260. package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
  261. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  262. package/lib/esm/components-react/filtering/FilteringInput.d.ts +1 -1
  263. package/lib/esm/components-react/filtering/ResultSelector.d.ts +1 -1
  264. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  265. package/lib/esm/components-react/properties/LinkHandler.d.ts +1 -1
  266. package/lib/esm/components-react/properties/LinkHandler.d.ts.map +1 -1
  267. package/lib/esm/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  268. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  269. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  270. package/lib/esm/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  271. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts +1 -1
  272. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  273. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  274. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  275. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  276. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  277. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  278. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  279. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  280. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  281. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  282. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  283. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  284. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  285. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  286. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  287. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  288. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  289. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  290. package/lib/esm/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  291. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  292. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  293. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  294. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +21 -9
  295. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  296. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts +12 -0
  297. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  298. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js +20 -0
  299. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  300. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  301. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts +2 -2
  302. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  303. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  304. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  305. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts +1 -1
  306. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  307. package/lib/esm/components-react/toolbar/Items.d.ts +1 -1
  308. package/lib/esm/components-react/toolbar/Items.d.ts.map +1 -1
  309. package/lib/esm/components-react/toolbar/Overflow.d.ts +1 -1
  310. package/lib/esm/components-react/toolbar/Overflow.d.ts.map +1 -1
  311. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts +1 -1
  312. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  313. package/lib/esm/components-react/toolbar/PopupItem.d.ts +2 -2
  314. package/lib/esm/components-react/toolbar/PopupItem.d.ts.map +1 -1
  315. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  316. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  317. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  318. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  319. package/lib/esm/components-react/toolbar/Toolbar.d.ts +1 -1
  320. package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
  321. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  322. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  323. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  324. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  325. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  326. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  327. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  328. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  329. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  330. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  331. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  332. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  333. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  334. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  335. package/lib/esm/components-react/tree/controlled/TreeHooks.js +21 -1
  336. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  337. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +1 -0
  338. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  339. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  340. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  341. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  342. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  343. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  344. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  345. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  346. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  347. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  348. package/lib/esm/components-react.d.ts +3 -0
  349. package/lib/esm/components-react.d.ts.map +1 -1
  350. package/lib/esm/components-react.js +3 -0
  351. package/lib/esm/components-react.js.map +1 -1
  352. package/lib/public/locales/en/UiComponents.json +12 -7
  353. package/package.json +8 -8
@@ -33,42 +33,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
33
33
  exports.PropertyFilterBuilderRuleGroupOperator = exports.PropertyFilterBuilderRuleGroupRenderer = void 0;
34
34
  require("./FilterBuilderRuleGroup.scss");
35
35
  const React = __importStar(require("react"));
36
- const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
37
36
  const itwinui_react_1 = require("@itwin/itwinui-react");
38
- const UiComponents_1 = require("../UiComponents");
39
37
  const FilterBuilderContext_1 = require("./FilterBuilderContext");
40
38
  const FilterBuilderRule_1 = require("./FilterBuilderRule");
41
39
  const FilterBuilderState_1 = require("./FilterBuilderState");
42
- const Operators_1 = require("./Operators");
40
+ const FilterBuilderLogicalOperator_1 = require("./FilterBuilderLogicalOperator");
43
41
  /**
44
42
  * Component that renders group of rules in [[PropertyFilterBuilder]] component.
45
43
  * @internal
46
44
  */
47
45
  function PropertyFilterBuilderRuleGroupRenderer(props) {
48
- const { path, group } = props;
49
- const { actions, ruleGroupDepthLimit } = React.useContext(FilterBuilderContext_1.PropertyFilterBuilderContext);
50
- const { onNewRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);
51
- const handleAddRule = (ruleType) => {
52
- actions.addItem(path, ruleType);
53
- onNewRuleAdded();
54
- };
55
- const removeGroup = () => actions.removeItem(path);
46
+ const { path, group, isGroupOperatorDisabled } = props;
47
+ const { actions } = React.useContext(FilterBuilderContext_1.PropertyFilterBuilderContext);
48
+ const { onRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);
56
49
  const onOperatorChange = React.useCallback((operator) => {
57
50
  actions.setRuleGroupOperator(path, operator);
58
51
  }, [path, actions]);
59
- const allowToAddGroup = ruleGroupDepthLimit === undefined || path.length < ruleGroupDepthLimit;
60
- const { focusedElement, hoveredElement, ...eventHandlers } = React.useContext(FilterBuilderContext_1.ActiveRuleGroupContext);
61
52
  const showOperator = group.items.length > 1;
62
- return (React.createElement("div", { ref: groupRef, className: "rule-group", "data-isactive": groupRef.current === focusedElement ||
63
- groupRef.current === hoveredElement, ...eventHandlers },
64
- React.createElement("div", { className: "rule-group-remove-action" }, group.groupId !== undefined && (React.createElement(itwinui_react_1.IconButton, { "data-testid": "rule-group-remove", onClick: removeGroup, styleType: "borderless", size: "small" },
65
- React.createElement(itwinui_icons_react_1.SvgDelete, null)))),
66
- React.createElement("div", { className: "rule-group-content" },
67
- showOperator ? (React.createElement(PropertyFilterBuilderRuleGroupOperator, { operator: group.operator, onChange: onOperatorChange })) : null,
68
- React.createElement("div", { className: "rule-group-items" }, group.items.map((item) => (React.createElement(PropertyFilterBuilderGroupOrRule, { key: item.id, path: path, item: item, isRemovable: group.items.length > 1 })))),
69
- React.createElement("div", { className: "rule-group-actions" },
70
- React.createElement(itwinui_react_1.Button, { key: "add-rule-button", "data-testid": "rule-group-add-rule", onClick: () => handleAddRule("RULE"), styleType: "borderless", size: "small", startIcon: React.createElement(itwinui_icons_react_1.SvgAdd, null) }, UiComponents_1.UiComponents.translate("filterBuilder.rule")),
71
- allowToAddGroup && (React.createElement(itwinui_react_1.Button, { key: "add-rule-group-button", "data-testid": "rule-group-add-rule-group", onClick: () => handleAddRule("RULE_GROUP"), styleType: "borderless", size: "small", startIcon: React.createElement(itwinui_icons_react_1.SvgAdd, null) }, UiComponents_1.UiComponents.translate("filterBuilder.ruleGroup")))))));
53
+ return (React.createElement(itwinui_react_1.Flex, { ref: groupRef, style: { alignSelf: "flex-start" }, className: "fb-group", gap: "0px" },
54
+ showOperator ? (React.createElement(PropertyFilterBuilderRuleGroupOperator, { operator: group.operator, onChange: onOperatorChange, isGroupOperatorDisabled: isGroupOperatorDisabled })) : null,
55
+ React.createElement("div", { className: "fb-wrapper" }, group.items.map((item) => (React.createElement("div", { className: "fb-row", key: item.id },
56
+ React.createElement(PropertyFilterBuilderGroupOrRule, { path: path, item: item, onRuleAdded: onRuleAdded })))))));
72
57
  }
73
58
  exports.PropertyFilterBuilderRuleGroupRenderer = PropertyFilterBuilderRuleGroupRenderer;
74
59
  /**
@@ -76,26 +61,16 @@ exports.PropertyFilterBuilderRuleGroupRenderer = PropertyFilterBuilderRuleGroupR
76
61
  * @internal
77
62
  */
78
63
  function PropertyFilterBuilderRuleGroupOperator(props) {
79
- const { operator, onChange } = props;
80
- const options = React.useMemo(() => [
81
- {
82
- value: Operators_1.PropertyFilterRuleGroupOperator.And,
83
- label: UiComponents_1.UiComponents.translate("filterBuilder.operators.and"),
84
- },
85
- {
86
- value: Operators_1.PropertyFilterRuleGroupOperator.Or,
87
- label: UiComponents_1.UiComponents.translate("filterBuilder.operators.or"),
88
- },
89
- ], []);
90
- return (React.createElement("div", { className: "rule-group-operator" },
91
- React.createElement(itwinui_react_1.Select, { options: options, value: operator, onChange: onChange, size: "small" })));
64
+ const { operator, isGroupOperatorDisabled, onChange } = props;
65
+ return (React.createElement(itwinui_react_1.Flex.Item, { alignSelf: "stretch" },
66
+ React.createElement(FilterBuilderLogicalOperator_1.PropertyFilterBuilderLogicalOperator, { className: "fb-group-operator", operator: operator, onOperatorChange: onChange, isDisabled: isGroupOperatorDisabled })));
92
67
  }
93
68
  exports.PropertyFilterBuilderRuleGroupOperator = PropertyFilterBuilderRuleGroupOperator;
94
- const PropertyFilterBuilderGroupOrRule = React.memo(function PropertyFilterBuilderGroupOrRule({ path, item, isRemovable, }) {
69
+ const PropertyFilterBuilderGroupOrRule = React.memo(function PropertyFilterBuilderGroupOrRule({ path, item, onRuleAdded, }) {
95
70
  const itemPath = [...path, item.id];
96
71
  if ((0, FilterBuilderState_1.isPropertyFilterBuilderRuleGroup)(item))
97
72
  return (React.createElement(PropertyFilterBuilderRuleGroupRenderer, { path: itemPath, group: item }));
98
- return (React.createElement(FilterBuilderRule_1.PropertyFilterBuilderRuleRenderer, { path: itemPath, rule: item, isRemovable: isRemovable }));
73
+ return (React.createElement(FilterBuilderRule_1.PropertyFilterBuilderRuleRenderer, { path: itemPath, rule: item, onRuleAdded: onRuleAdded }));
99
74
  });
100
75
  const useRulePropertyFocus = (currentGroupItemsLength) => {
101
76
  const previousGroupItemsLength = React.useRef(0);
@@ -105,12 +80,12 @@ const useRulePropertyFocus = (currentGroupItemsLength) => {
105
80
  if (isNewRuleAdded.current &&
106
81
  previousGroupItemsLength.current < currentGroupItemsLength &&
107
82
  groupRef.current) {
108
- const ruleProperties = groupRef.current.querySelectorAll(".rule-property input");
83
+ const ruleProperties = groupRef.current.querySelectorAll(".fb-property-name input");
109
84
  ruleProperties[ruleProperties.length - 1].focus();
110
85
  isNewRuleAdded.current = false;
111
86
  }
112
87
  previousGroupItemsLength.current = currentGroupItemsLength;
113
88
  }, [currentGroupItemsLength]);
114
- return { onNewRuleAdded: () => (isNewRuleAdded.current = true), groupRef };
89
+ return { onRuleAdded: () => (isNewRuleAdded.current = true), groupRef };
115
90
  };
116
91
  //# sourceMappingURL=FilterBuilderRuleGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleGroup.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleGroup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport \"./FilterBuilderRuleGroup.scss\";\nimport * as React from \"react\";\nimport { SvgAdd, SvgDelete } from \"@itwin/itwinui-icons-react\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Button, IconButton, Select } from \"@itwin/itwinui-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport {\n ActiveRuleGroupContext,\n PropertyFilterBuilderContext,\n} from \"./FilterBuilderContext\";\nimport { PropertyFilterBuilderRuleRenderer } from \"./FilterBuilderRule\";\nimport type {\n PropertyFilterBuilderRuleGroup,\n PropertyFilterBuilderRuleGroupItem,\n} from \"./FilterBuilderState\";\nimport { isPropertyFilterBuilderRuleGroup } from \"./FilterBuilderState\";\nimport { PropertyFilterRuleGroupOperator } from \"./Operators\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleGroupRenderer]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleGroupRendererProps {\n /** Path from [[PropertyFilterBuilder]] root to this rule group. */\n path: string[];\n /** Rule group to render. */\n group: PropertyFilterBuilderRuleGroup;\n}\n\n/**\n * Component that renders group of rules in [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport function PropertyFilterBuilderRuleGroupRenderer(\n props: PropertyFilterBuilderRuleGroupRendererProps\n) {\n const { path, group } = props;\n const { actions, ruleGroupDepthLimit } = React.useContext(\n PropertyFilterBuilderContext\n );\n const { onNewRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);\n\n const handleAddRule = (ruleType: \"RULE\" | \"RULE_GROUP\") => {\n actions.addItem(path, ruleType);\n onNewRuleAdded();\n };\n const removeGroup = () => actions.removeItem(path);\n\n const onOperatorChange = React.useCallback(\n (operator: PropertyFilterRuleGroupOperator) => {\n actions.setRuleGroupOperator(path, operator);\n },\n [path, actions]\n );\n\n const allowToAddGroup =\n ruleGroupDepthLimit === undefined || path.length < ruleGroupDepthLimit;\n const { focusedElement, hoveredElement, ...eventHandlers } = React.useContext(\n ActiveRuleGroupContext\n );\n\n const showOperator = group.items.length > 1;\n\n return (\n <div\n ref={groupRef}\n className=\"rule-group\"\n data-isactive={\n groupRef.current === focusedElement ||\n groupRef.current === hoveredElement\n }\n {...eventHandlers}\n >\n <div className=\"rule-group-remove-action\">\n {group.groupId !== undefined && (\n <IconButton\n data-testid=\"rule-group-remove\"\n onClick={removeGroup}\n styleType=\"borderless\"\n size=\"small\"\n >\n <SvgDelete />\n </IconButton>\n )}\n </div>\n <div className=\"rule-group-content\">\n {showOperator ? (\n <PropertyFilterBuilderRuleGroupOperator\n operator={group.operator}\n onChange={onOperatorChange}\n />\n ) : null}\n <div className=\"rule-group-items\">\n {group.items.map((item) => (\n <PropertyFilterBuilderGroupOrRule\n key={item.id}\n path={path}\n item={item}\n isRemovable={group.items.length > 1}\n />\n ))}\n </div>\n <div className=\"rule-group-actions\">\n <Button\n key=\"add-rule-button\"\n data-testid=\"rule-group-add-rule\"\n onClick={() => handleAddRule(\"RULE\")}\n styleType=\"borderless\"\n size=\"small\"\n startIcon={<SvgAdd />}\n >\n {UiComponents.translate(\"filterBuilder.rule\")}\n </Button>\n {allowToAddGroup && (\n <Button\n key=\"add-rule-group-button\"\n data-testid=\"rule-group-add-rule-group\"\n onClick={() => handleAddRule(\"RULE_GROUP\")}\n styleType=\"borderless\"\n size=\"small\"\n startIcon={<SvgAdd />}\n >\n {UiComponents.translate(\"filterBuilder.ruleGroup\")}\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n/**\n * Props for [[PropertyFilterBuilderRuleGroupOperator]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleGroupOperatorProps {\n /** Currently selected operator. */\n operator: PropertyFilterRuleGroupOperator;\n /** Callback that is invoked when selected operator changes. */\n onChange: (operator: PropertyFilterRuleGroupOperator) => void;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleGroup]] operator selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleGroupOperator(\n props: PropertyFilterBuilderRuleGroupOperatorProps\n) {\n const { operator, onChange } = props;\n\n const options = React.useMemo<\n Array<SelectOption<PropertyFilterRuleGroupOperator>>\n >(\n () => [\n {\n value: PropertyFilterRuleGroupOperator.And,\n label: UiComponents.translate(\"filterBuilder.operators.and\"),\n },\n {\n value: PropertyFilterRuleGroupOperator.Or,\n label: UiComponents.translate(\"filterBuilder.operators.or\"),\n },\n ],\n []\n );\n\n return (\n <div className=\"rule-group-operator\">\n <Select\n options={options}\n value={operator}\n onChange={onChange}\n size=\"small\"\n />\n </div>\n );\n}\ninterface PropertyFilterBuilderGroupOrRuleProps {\n path: string[];\n item: PropertyFilterBuilderRuleGroupItem;\n isRemovable?: boolean;\n}\n\nconst PropertyFilterBuilderGroupOrRule = React.memo(\n function PropertyFilterBuilderGroupOrRule({\n path,\n item,\n isRemovable,\n }: PropertyFilterBuilderGroupOrRuleProps) {\n const itemPath = [...path, item.id];\n\n if (isPropertyFilterBuilderRuleGroup(item))\n return (\n <PropertyFilterBuilderRuleGroupRenderer path={itemPath} group={item} />\n );\n return (\n <PropertyFilterBuilderRuleRenderer\n path={itemPath}\n rule={item}\n isRemovable={isRemovable}\n />\n );\n }\n);\n\nconst useRulePropertyFocus = (currentGroupItemsLength: number) => {\n const previousGroupItemsLength = React.useRef<number>(0);\n const isNewRuleAdded = React.useRef<boolean>(false);\n const groupRef = React.useRef<HTMLDivElement>(null);\n React.useEffect(() => {\n if (\n isNewRuleAdded.current &&\n previousGroupItemsLength.current < currentGroupItemsLength &&\n groupRef.current\n ) {\n const ruleProperties =\n groupRef.current.querySelectorAll<HTMLInputElement>(\n \".rule-property input\"\n );\n ruleProperties[ruleProperties.length - 1].focus();\n isNewRuleAdded.current = false;\n }\n previousGroupItemsLength.current = currentGroupItemsLength;\n }, [currentGroupItemsLength]);\n\n return { onNewRuleAdded: () => (isNewRuleAdded.current = true), groupRef };\n};\n"]}
1
+ {"version":3,"file":"FilterBuilderRuleGroup.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleGroup.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAuC;AACvC,6CAA+B;AAC/B,wDAA4C;AAC5C,iEAAsE;AACtE,2DAAwE;AAKxE,6DAAwE;AAExE,iFAAsF;AAetF;;;GAGG;AACH,SAAgB,sCAAsC,CACpD,KAAkD;IAElD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,EAAE,GAAG,KAAK,CAAC;IACvD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,mDAA4B,CAAC,CAAC;IACnE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE3E,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CACxC,CAAC,QAA8C,EAAE,EAAE;QACjD,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE5C,OAAO,CACL,oBAAC,oBAAI,IACH,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,EAClC,SAAS,EAAC,UAAU,EACpB,GAAG,EAAC,KAAK;QAER,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,sCAAsC,IACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,gBAAgB,EAC1B,uBAAuB,EAAE,uBAAuB,GAChD,CACH,CAAC,CAAC,CAAC,IAAI;QACR,6BAAK,SAAS,EAAC,YAAY,IACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,6BAAK,SAAS,EAAC,QAAQ,EAAC,GAAG,EAAE,IAAI,CAAC,EAAE;YAClC,oBAAC,gCAAgC,IAC/B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,GACxB,CACE,CACP,CAAC,CACE,CACD,CACR,CAAC;AACJ,CAAC;AA3CD,wFA2CC;AAeD;;;GAGG;AACH,SAAgB,sCAAsC,CACpD,KAAkD;IAElD,MAAM,EAAE,QAAQ,EAAE,uBAAuB,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE9D,OAAO,CACL,oBAAC,oBAAI,CAAC,IAAI,IAAC,SAAS,EAAC,SAAS;QAC5B,oBAAC,mEAAoC,IACnC,SAAS,EAAC,mBAAmB,EAC7B,QAAQ,EAAE,QAAQ,EAClB,gBAAgB,EAAE,QAAQ,EAC1B,UAAU,EAAE,uBAAuB,GACnC,CACQ,CACb,CAAC;AACJ,CAAC;AAfD,wFAeC;AAOD,MAAM,gCAAgC,GAAG,KAAK,CAAC,IAAI,CACjD,SAAS,gCAAgC,CAAC,EACxC,IAAI,EACJ,IAAI,EACJ,WAAW,GAC2B;IACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEpC,IAAI,IAAA,qDAAgC,EAAC,IAAI,CAAC;QACxC,OAAO,CACL,oBAAC,sCAAsC,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAI,CACxE,CAAC;IACJ,OAAO,CACL,oBAAC,qDAAiC,IAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,uBAA+B,EAAE,EAAE;IAC/D,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAAS,CAAC,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAU,KAAK,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACpD,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IACE,cAAc,CAAC,OAAO;YACtB,wBAAwB,CAAC,OAAO,GAAG,uBAAuB;YAC1D,QAAQ,CAAC,OAAO,EAChB;YACA,MAAM,cAAc,GAClB,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAC/B,yBAAyB,CAC1B,CAAC;YACJ,cAAc,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAClD,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;SAChC;QACD,wBAAwB,CAAC,OAAO,GAAG,uBAAuB,CAAC;IAC7D,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAE9B,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC1E,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport \"./FilterBuilderRuleGroup.scss\";\nimport * as React from \"react\";\nimport { Flex } from \"@itwin/itwinui-react\";\nimport { PropertyFilterBuilderContext } from \"./FilterBuilderContext\";\nimport { PropertyFilterBuilderRuleRenderer } from \"./FilterBuilderRule\";\nimport type {\n PropertyFilterBuilderRuleGroup,\n PropertyFilterBuilderRuleGroupItem,\n} from \"./FilterBuilderState\";\nimport { isPropertyFilterBuilderRuleGroup } from \"./FilterBuilderState\";\nimport type { PropertyFilterRuleGroupOperator } from \"./Operators\";\nimport { PropertyFilterBuilderLogicalOperator } from \"./FilterBuilderLogicalOperator\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleGroupRenderer]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleGroupRendererProps {\n /** Path from [[PropertyFilterBuilder]] root to this rule group. */\n path: string[];\n /** Rule group to render. */\n group: PropertyFilterBuilderRuleGroup;\n /** Controls whether the group operator is toggle-able. */\n isGroupOperatorDisabled?: boolean;\n}\n\n/**\n * Component that renders group of rules in [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport function PropertyFilterBuilderRuleGroupRenderer(\n props: PropertyFilterBuilderRuleGroupRendererProps\n) {\n const { path, group, isGroupOperatorDisabled } = props;\n const { actions } = React.useContext(PropertyFilterBuilderContext);\n const { onRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);\n\n const onOperatorChange = React.useCallback(\n (operator: `${PropertyFilterRuleGroupOperator}`) => {\n actions.setRuleGroupOperator(path, operator);\n },\n [path, actions]\n );\n\n const showOperator = group.items.length > 1;\n\n return (\n <Flex\n ref={groupRef}\n style={{ alignSelf: \"flex-start\" }}\n className=\"fb-group\"\n gap=\"0px\"\n >\n {showOperator ? (\n <PropertyFilterBuilderRuleGroupOperator\n operator={group.operator}\n onChange={onOperatorChange}\n isGroupOperatorDisabled={isGroupOperatorDisabled}\n />\n ) : null}\n <div className=\"fb-wrapper\">\n {group.items.map((item) => (\n <div className=\"fb-row\" key={item.id}>\n <PropertyFilterBuilderGroupOrRule\n path={path}\n item={item}\n onRuleAdded={onRuleAdded}\n />\n </div>\n ))}\n </div>\n </Flex>\n );\n}\n\n/**\n * Props for [[PropertyFilterBuilderRuleGroupOperator]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleGroupOperatorProps {\n /** Currently selected operator. */\n operator: `${PropertyFilterRuleGroupOperator}`;\n /** Callback that is invoked when selected operator changes. */\n onChange: (operator: `${PropertyFilterRuleGroupOperator}`) => void;\n /** Controls whether the group operator is toggle-able. */\n isGroupOperatorDisabled?: boolean;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleGroup]] operator selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleGroupOperator(\n props: PropertyFilterBuilderRuleGroupOperatorProps\n) {\n const { operator, isGroupOperatorDisabled, onChange } = props;\n\n return (\n <Flex.Item alignSelf=\"stretch\">\n <PropertyFilterBuilderLogicalOperator\n className=\"fb-group-operator\"\n operator={operator}\n onOperatorChange={onChange}\n isDisabled={isGroupOperatorDisabled}\n />\n </Flex.Item>\n );\n}\ninterface PropertyFilterBuilderGroupOrRuleProps {\n path: string[];\n item: PropertyFilterBuilderRuleGroupItem;\n onRuleAdded: () => void;\n}\n\nconst PropertyFilterBuilderGroupOrRule = React.memo(\n function PropertyFilterBuilderGroupOrRule({\n path,\n item,\n onRuleAdded,\n }: PropertyFilterBuilderGroupOrRuleProps) {\n const itemPath = [...path, item.id];\n\n if (isPropertyFilterBuilderRuleGroup(item))\n return (\n <PropertyFilterBuilderRuleGroupRenderer path={itemPath} group={item} />\n );\n return (\n <PropertyFilterBuilderRuleRenderer\n path={itemPath}\n rule={item}\n onRuleAdded={onRuleAdded}\n />\n );\n }\n);\n\nconst useRulePropertyFocus = (currentGroupItemsLength: number) => {\n const previousGroupItemsLength = React.useRef<number>(0);\n const isNewRuleAdded = React.useRef<boolean>(false);\n const groupRef = React.useRef<HTMLDivElement>(null);\n React.useEffect(() => {\n if (\n isNewRuleAdded.current &&\n previousGroupItemsLength.current < currentGroupItemsLength &&\n groupRef.current\n ) {\n const ruleProperties =\n groupRef.current.querySelectorAll<HTMLInputElement>(\n \".fb-property-name input\"\n );\n ruleProperties[ruleProperties.length - 1].focus();\n isNewRuleAdded.current = false;\n }\n previousGroupItemsLength.current = currentGroupItemsLength;\n }, [currentGroupItemsLength]);\n\n return { onRuleAdded: () => (isNewRuleAdded.current = true), groupRef };\n};\n"]}
@@ -2,67 +2,33 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
-
6
- .filter-builder > .rule-group {
7
- & > .rule-group-content {
8
- border-left: 0;
9
- padding-left: 0;
10
- }
11
-
12
- & > .rule-group-remove-action {
13
- padding-right: 0;
14
- }
15
- }
16
-
17
- .rule-group {
18
- display: grid;
19
- grid-template-columns: min-content auto;
20
- padding: 11px 0;
21
-
22
- &[data-isactive="true"] > .rule-group-remove-action {
23
- visibility: visible;
24
- }
25
-
26
- &[data-isactive="true"] > .rule-group-content {
27
- border-color: var(--iui-color-border-foreground-hover);
28
- }
29
-
30
- &[data-isactive="false"]
31
- > .rule-group-content
32
- > .rule-group-actions
33
- .iui-button {
34
- color: var(--iui-color-icon);
35
- }
36
-
37
- .rule-group-remove-action {
38
- padding: 3px var(--iui-size-s) 3px 0;
39
- visibility: hidden;
40
- }
41
-
42
- .rule-group-content {
43
- padding-left: var(--iui-size-s);
44
- border-left: 1px solid;
5
+ .fb-group {
6
+ --border-color: var(--iui-color-border);
7
+ --fb-operator-width: 110px;
8
+ --divider-width: var(--iui-size-2xs);
9
+ --divider-background-color: var(--iui-color-border-subtle);
10
+
11
+ .fb-wrapper {
12
+ width: 100%;
13
+ }
14
+
15
+ .fb-logical-operator {
16
+ width: var(--fb-operator-width);
17
+ height: 100%;
18
+ text-align: center;
19
+ background-color: var(--iui-color-background-hover);
20
+ user-select: none;
21
+ display: grid;
22
+ place-items: center;
45
23
  box-sizing: border-box;
46
- border-color: var(--iui-color-border-subtle);
47
-
48
- .rule-group-operator {
49
- padding: 3px 0;
50
- width: max-content;
51
- }
52
-
53
- .rule-group-actions {
54
- padding: 3px 0;
55
- display: grid;
56
- grid-template-columns: min-content min-content;
57
- gap: 8px;
58
- }
24
+ font-size: var(--iui-font-size-2);
25
+ font-weight: var(--iui-font-weight-semibold);
26
+ padding-block: var(--iui-size-s);
59
27
  }
60
- }
61
-
62
- .rule-group-items > .rule-group {
63
- padding-bottom: 22px;
64
28
 
65
- &:last-child {
66
- padding-bottom: 11px;
29
+ .fb-group-operator {
30
+ border-style: solid;
31
+ border-color: var(--border-color);
32
+ border-width: 1px 0 1px 1px;
67
33
  }
68
34
  }
@@ -1,24 +1,29 @@
1
1
  /** @packageDocumentation
2
2
  * @module PropertyFilterBuilder
3
3
  */
4
- /// <reference types="react" />
5
- import type { PropertyDescription } from "@itwin/appui-abstract";
6
- import type { PropertyFilterRuleOperator } from "./Operators";
4
+ import * as React from "react";
5
+ import { type PropertyDescription } from "@itwin/appui-abstract";
6
+ import type { PropertyFilterBuilderRuleOperator } from "./Operators";
7
7
  /**
8
8
  * Props for [[PropertyFilterBuilderRuleOperator]] component.
9
9
  * @beta
10
10
  */
11
11
  export interface PropertyFilterBuilderRuleOperatorProps {
12
12
  /** Currently selected operator. */
13
- operator?: PropertyFilterRuleOperator;
13
+ operator?: PropertyFilterBuilderRuleOperator;
14
14
  /** Property used in rule for which this operator will be used. */
15
15
  property: PropertyDescription;
16
16
  /** Callback that is invoked when selected operator changes. */
17
- onChange: (operator: PropertyFilterRuleOperator) => void;
17
+ onChange: (operator: PropertyFilterBuilderRuleOperator) => void;
18
18
  }
19
19
  /**
20
20
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] operator selector.
21
21
  * @internal
22
22
  */
23
- export declare function PropertyFilterBuilderRuleOperator(props: PropertyFilterBuilderRuleOperatorProps): JSX.Element;
23
+ export declare function PropertyFilterBuilderRuleOperatorRenderer(props: PropertyFilterBuilderRuleOperatorProps): React.JSX.Element;
24
+ /**
25
+ * Function that returns display label for [[PropertyFilterBuilderRuleOperator]].
26
+ * @beta
27
+ */
28
+ export declare function getPropertyFilterBuilderOperatorLabel(operator: PropertyFilterBuilderRuleOperator): string;
24
29
  //# sourceMappingURL=FilterBuilderRuleOperator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleOperator.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleOperator.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAM9D;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,kEAAkE;IAClE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,CAAC;CAC1D;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,eAkC9C"}
1
+ {"version":3,"file":"FilterBuilderRuleOperator.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleOperator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAIrE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,mCAAmC;IACnC,QAAQ,CAAC,EAAE,iCAAiC,CAAC;IAC7C,kEAAkE;IAClE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,QAAQ,EAAE,iCAAiC,KAAK,IAAI,CAAC;CACjE;AAED;;;GAGG;AACH,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,sCAAsC,qBAkC9C;AAGD;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,iCAAiC,UA8B5C"}
@@ -30,28 +30,65 @@ var __importStar = (this && this.__importStar) || function (mod) {
30
30
  return result;
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.PropertyFilterBuilderRuleOperator = void 0;
33
+ exports.getPropertyFilterBuilderOperatorLabel = exports.PropertyFilterBuilderRuleOperatorRenderer = void 0;
34
34
  const React = __importStar(require("react"));
35
35
  const itwinui_react_1 = require("@itwin/itwinui-react");
36
36
  const Operators_1 = require("./Operators");
37
+ const UiComponents_1 = require("../UiComponents");
37
38
  /**
38
39
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] operator selector.
39
40
  * @internal
40
41
  */
41
- function PropertyFilterBuilderRuleOperator(props) {
42
+ function PropertyFilterBuilderRuleOperatorRenderer(props) {
42
43
  var _a;
43
44
  const { operator, property, onChange } = props;
44
- const availableOperators = React.useMemo(() => (0, Operators_1.getPropertyFilterOperators)(property), [property]);
45
+ const availableOperators = React.useMemo(() => (0, Operators_1.getPropertyFilterBuilderOperators)(property), [property]);
45
46
  const selectedOperator = (_a = availableOperators.find((op) => op === operator)) !== null && _a !== void 0 ? _a : availableOperators[0];
46
47
  React.useEffect(() => {
47
48
  onChange(selectedOperator);
48
49
  }, [onChange, selectedOperator]);
49
50
  const availableOptions = React.useMemo(() => availableOperators.map((op) => ({
50
51
  value: op,
51
- label: (0, Operators_1.getPropertyFilterOperatorLabel)(op),
52
+ label: getPropertyFilterBuilderOperatorLabel(op),
52
53
  })), [availableOperators]);
53
- return (React.createElement("div", { className: "rule-operator" },
54
+ return (React.createElement("div", { className: "fb-row-condition" },
54
55
  React.createElement(itwinui_react_1.Select, { options: availableOptions, value: selectedOperator, onChange: onChange, size: "small" })));
55
56
  }
56
- exports.PropertyFilterBuilderRuleOperator = PropertyFilterBuilderRuleOperator;
57
+ exports.PropertyFilterBuilderRuleOperatorRenderer = PropertyFilterBuilderRuleOperatorRenderer;
58
+ /* istanbul ignore next */
59
+ /**
60
+ * Function that returns display label for [[PropertyFilterBuilderRuleOperator]].
61
+ * @beta
62
+ */
63
+ function getPropertyFilterBuilderOperatorLabel(operator) {
64
+ switch (operator) {
65
+ case "is-true":
66
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isTrue");
67
+ case "is-false":
68
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isFalse");
69
+ case "is-equal":
70
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.equal");
71
+ case "is-not-equal":
72
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.notEqual");
73
+ case "greater":
74
+ return ">";
75
+ case "greater-or-equal":
76
+ return ">=";
77
+ case "less":
78
+ return "<";
79
+ case "less-or-equal":
80
+ return "<=";
81
+ case "like":
82
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.contains");
83
+ case "is-null":
84
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isNull");
85
+ case "is-not-null":
86
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.isNotNull");
87
+ case "between":
88
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.between");
89
+ case "not-between":
90
+ return UiComponents_1.UiComponents.translate("filterBuilder.operators.notBetween");
91
+ }
92
+ }
93
+ exports.getPropertyFilterBuilderOperatorLabel = getPropertyFilterBuilderOperatorLabel;
57
94
  //# sourceMappingURL=FilterBuilderRuleOperator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleOperator.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleOperator.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,wDAA8C;AAE9C,2CAGqB;AAerB;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,KAA6C;;IAE7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE/C,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CACtC,GAAG,EAAE,CAAC,IAAA,sCAA0B,EAAC,QAAQ,CAAC,EAC1C,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,gBAAgB,GACpB,MAAA,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,mCAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE5E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,GAAG,EAAE,CACH,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,IAAA,0CAA8B,EAAC,EAAE,CAAC;KAC1C,CAAC,CAAC,EACL,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,eAAe;QAC5B,oBAAC,sBAAM,IACL,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,GACZ,CACE,CACP,CAAC;AACJ,CAAC;AAnCD,8EAmCC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport { Select } from \"@itwin/itwinui-react\";\nimport type { PropertyFilterRuleOperator } from \"./Operators\";\nimport {\n getPropertyFilterOperatorLabel,\n getPropertyFilterOperators,\n} from \"./Operators\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleOperator]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleOperatorProps {\n /** Currently selected operator. */\n operator?: PropertyFilterRuleOperator;\n /** Property used in rule for which this operator will be used. */\n property: PropertyDescription;\n /** Callback that is invoked when selected operator changes. */\n onChange: (operator: PropertyFilterRuleOperator) => void;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] operator selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleOperator(\n props: PropertyFilterBuilderRuleOperatorProps\n) {\n const { operator, property, onChange } = props;\n\n const availableOperators = React.useMemo(\n () => getPropertyFilterOperators(property),\n [property]\n );\n const selectedOperator =\n availableOperators.find((op) => op === operator) ?? availableOperators[0];\n\n React.useEffect(() => {\n onChange(selectedOperator);\n }, [onChange, selectedOperator]);\n\n const availableOptions = React.useMemo(\n () =>\n availableOperators.map((op) => ({\n value: op,\n label: getPropertyFilterOperatorLabel(op),\n })),\n [availableOperators]\n );\n\n return (\n <div className=\"rule-operator\">\n <Select\n options={availableOptions}\n value={selectedOperator}\n onChange={onChange}\n size=\"small\"\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"FilterBuilderRuleOperator.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleOperator.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,wDAA8C;AAE9C,2CAAgE;AAChE,kDAA+C;AAe/C;;;GAGG;AACH,SAAgB,yCAAyC,CACvD,KAA6C;;IAE7C,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE/C,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CACtC,GAAG,EAAE,CAAC,IAAA,6CAAiC,EAAC,QAAQ,CAAC,EACjD,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,MAAM,gBAAgB,GACpB,MAAA,kBAAkB,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,mCAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAE5E,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CACpC,GAAG,EAAE,CACH,kBAAkB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,qCAAqC,CAAC,EAAE,CAAC;KACjD,CAAC,CAAC,EACL,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,kBAAkB;QAC/B,oBAAC,sBAAM,IACL,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,GACb,CACE,CACP,CAAC;AACJ,CAAC;AAnCD,8FAmCC;AAED,0BAA0B;AAC1B;;;GAGG;AACH,SAAgB,qCAAqC,CACnD,QAA2C;IAE3C,QAAQ,QAAQ,EAAE;QAChB,KAAK,SAAS;YACZ,OAAO,2BAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,UAAU;YACb,OAAO,2BAAY,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,KAAK,UAAU;YACb,OAAO,2BAAY,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACjE,KAAK,cAAc;YACjB,OAAO,2BAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,KAAK,SAAS;YACZ,OAAO,GAAG,CAAC;QACb,KAAK,kBAAkB;YACrB,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,GAAG,CAAC;QACb,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC;QACd,KAAK,MAAM;YACT,OAAO,2BAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,KAAK,SAAS;YACZ,OAAO,2BAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,aAAa;YAChB,OAAO,2BAAY,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACrE,KAAK,SAAS;YACZ,OAAO,2BAAY,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,KAAK,aAAa;YAChB,OAAO,2BAAY,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;KACvE;AACH,CAAC;AA/BD,sFA+BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport { type PropertyDescription } from \"@itwin/appui-abstract\";\nimport { Select } from \"@itwin/itwinui-react\";\nimport type { PropertyFilterBuilderRuleOperator } from \"./Operators\";\nimport { getPropertyFilterBuilderOperators } from \"./Operators\";\nimport { UiComponents } from \"../UiComponents\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleOperator]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleOperatorProps {\n /** Currently selected operator. */\n operator?: PropertyFilterBuilderRuleOperator;\n /** Property used in rule for which this operator will be used. */\n property: PropertyDescription;\n /** Callback that is invoked when selected operator changes. */\n onChange: (operator: PropertyFilterBuilderRuleOperator) => void;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] operator selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleOperatorRenderer(\n props: PropertyFilterBuilderRuleOperatorProps\n) {\n const { operator, property, onChange } = props;\n\n const availableOperators = React.useMemo(\n () => getPropertyFilterBuilderOperators(property),\n [property]\n );\n const selectedOperator =\n availableOperators.find((op) => op === operator) ?? availableOperators[0];\n\n React.useEffect(() => {\n onChange(selectedOperator);\n }, [onChange, selectedOperator]);\n\n const availableOptions = React.useMemo(\n () =>\n availableOperators.map((op) => ({\n value: op,\n label: getPropertyFilterBuilderOperatorLabel(op),\n })),\n [availableOperators]\n );\n\n return (\n <div className=\"fb-row-condition\">\n <Select\n options={availableOptions}\n value={selectedOperator}\n onChange={onChange}\n size={\"small\"}\n />\n </div>\n );\n}\n\n/* istanbul ignore next */\n/**\n * Function that returns display label for [[PropertyFilterBuilderRuleOperator]].\n * @beta\n */\nexport function getPropertyFilterBuilderOperatorLabel(\n operator: PropertyFilterBuilderRuleOperator\n) {\n switch (operator) {\n case \"is-true\":\n return UiComponents.translate(\"filterBuilder.operators.isTrue\");\n case \"is-false\":\n return UiComponents.translate(\"filterBuilder.operators.isFalse\");\n case \"is-equal\":\n return UiComponents.translate(\"filterBuilder.operators.equal\");\n case \"is-not-equal\":\n return UiComponents.translate(\"filterBuilder.operators.notEqual\");\n case \"greater\":\n return \">\";\n case \"greater-or-equal\":\n return \">=\";\n case \"less\":\n return \"<\";\n case \"less-or-equal\":\n return \"<=\";\n case \"like\":\n return UiComponents.translate(\"filterBuilder.operators.contains\");\n case \"is-null\":\n return UiComponents.translate(\"filterBuilder.operators.isNull\");\n case \"is-not-null\":\n return UiComponents.translate(\"filterBuilder.operators.isNotNull\");\n case \"between\":\n return UiComponents.translate(\"filterBuilder.operators.between\");\n case \"not-between\":\n return UiComponents.translate(\"filterBuilder.operators.notBetween\");\n }\n}\n"]}
@@ -23,5 +23,5 @@ export interface PropertyFilterBuilderRulePropertyProps {
23
23
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] property selector.
24
24
  * @internal
25
25
  */
26
- export declare function PropertyFilterBuilderRuleProperty(props: PropertyFilterBuilderRulePropertyProps): JSX.Element;
26
+ export declare function PropertyFilterBuilderRuleProperty(props: PropertyFilterBuilderRulePropertyProps): React.JSX.Element;
27
27
  //# sourceMappingURL=FilterBuilderRuleProperty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleProperty.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,oCAAoC;IACpC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,+DAA+D;IAC/D,yBAAyB,EAAE,CAAC,QAAQ,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpE,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,eAoE9C"}
1
+ {"version":3,"file":"FilterBuilderRuleProperty.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAKjE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,oCAAoC;IACpC,UAAU,EAAE,mBAAmB,EAAE,CAAC;IAClC,mCAAmC;IACnC,gBAAgB,CAAC,EAAE,mBAAmB,CAAC;IACvC,+DAA+D;IAC/D,yBAAyB,EAAE,CAAC,QAAQ,CAAC,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACpE,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACrD,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,qBAoE9C"}
@@ -58,7 +58,7 @@ function PropertyFilterBuilderRuleProperty(props) {
58
58
  ? propertyRenderer(selectOption.value)
59
59
  : selectOption.label));
60
60
  }, [propertyRenderer]);
61
- return (React.createElement("div", { className: "rule-property" },
61
+ return (React.createElement("div", { className: "fb-property-name" },
62
62
  React.createElement(itwinui_react_1.ComboBox, { options: selectOptions, onChange: onPropertyChanged, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name, inputProps: {
63
63
  placeholder: UiComponents_1.UiComponents.translate("filterBuilder.chooseProperty"),
64
64
  disabled: isDisabled,
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleProperty.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAG/B,wDAA0D;AAC1D,kDAA+C;AAmB/C;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,KAA6C;IAE7C,MAAM,EACJ,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,GAAG,EAAE,CACH,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,KAAK,EAAE,QAAQ,CAAC,YAAY;QAC5B,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB,CAAC,CAAC,EACL,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,IAAY,EAAE,EAAE;QACf,yBAAyB,CACvB,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC,EACD,CAAC,UAAU,EAAE,yBAAyB,CAAC,CACxC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAC7C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA,CACvD,CAAC;QACF,IAAI,CAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,OAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA;YAC1D,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAGpC,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;QACnC,OAAO,CACL,oBAAC,wBAAQ,IAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,IAC9C,gBAAgB;YACf,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,YAAY,CAAC,KAAK,CACb,CACZ,CAAC;IACJ,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,eAAe;QAC5B,oBAAC,wBAAQ,IACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,EAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,2BAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;gBACnE,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,OAAO;aACd,EACD,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,IAAI,GAC1B,CACE,CACP,CAAC;AACJ,CAAC;AArED,8EAqEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport type { ComboBoxProps, SelectOption } from \"@itwin/itwinui-react\";\nimport { ComboBox, MenuItem } from \"@itwin/itwinui-react\";\nimport { UiComponents } from \"../UiComponents\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleProperty]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRulePropertyProps {\n /** List of available properties. */\n properties: PropertyDescription[];\n /** Currently selected property. */\n selectedProperty?: PropertyDescription;\n /** Callback that is invoked when selected property changes. */\n onSelectedPropertyChanged: (property?: PropertyDescription) => void;\n /** Custom renderer for property item inside selector. */\n propertyRenderer?: (name: string) => React.ReactNode;\n /** Specifies whether selector should be disabled or not. */\n isDisabled?: boolean;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] property selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleProperty(\n props: PropertyFilterBuilderRulePropertyProps\n) {\n const {\n selectedProperty,\n properties,\n onSelectedPropertyChanged,\n propertyRenderer,\n isDisabled,\n } = props;\n\n const selectOptions = React.useMemo<SelectOption<string>[]>(\n () =>\n properties.map((property) => ({\n id: property.name,\n label: property.displayLabel,\n value: property.name,\n })),\n [properties]\n );\n\n const onPropertyChanged = React.useCallback(\n (name: string) => {\n onSelectedPropertyChanged(\n properties.find((property) => property.name === name)\n );\n },\n [properties, onSelectedPropertyChanged]\n );\n\n React.useEffect(() => {\n const currentSelectedProperty = properties.find(\n (property) => property.name === selectedProperty?.name\n );\n if (currentSelectedProperty?.name !== selectedProperty?.name)\n onSelectedPropertyChanged(currentSelectedProperty);\n }, [properties, selectedProperty, onSelectedPropertyChanged]);\n\n const itemRenderer = React.useCallback<\n Required<ComboBoxProps<string>>[\"itemRenderer\"]\n >(\n (selectOption, { isSelected, id }) => {\n return (\n <MenuItem key={id} id={id} isSelected={isSelected}>\n {propertyRenderer\n ? propertyRenderer(selectOption.value)\n : selectOption.label}\n </MenuItem>\n );\n },\n [propertyRenderer]\n );\n\n return (\n <div className=\"rule-property\">\n <ComboBox\n options={selectOptions}\n onChange={onPropertyChanged}\n value={selectedProperty?.name}\n inputProps={{\n placeholder: UiComponents.translate(\"filterBuilder.chooseProperty\"),\n disabled: isDisabled,\n size: \"small\",\n }}\n itemRenderer={itemRenderer}\n enableVirtualization={true}\n />\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"FilterBuilderRuleProperty.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleProperty.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAG/B,wDAA0D;AAC1D,kDAA+C;AAmB/C;;;GAGG;AACH,SAAgB,iCAAiC,CAC/C,KAA6C;IAE7C,MAAM,EACJ,gBAAgB,EAChB,UAAU,EACV,yBAAyB,EACzB,gBAAgB,EAChB,UAAU,GACX,GAAG,KAAK,CAAC;IAEV,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CACjC,GAAG,EAAE,CACH,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5B,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,KAAK,EAAE,QAAQ,CAAC,YAAY;QAC5B,KAAK,EAAE,QAAQ,CAAC,IAAI;KACrB,CAAC,CAAC,EACL,CAAC,UAAU,CAAC,CACb,CAAC;IAEF,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CACzC,CAAC,IAAY,EAAE,EAAE;QACf,yBAAyB,CACvB,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,CACtD,CAAC;IACJ,CAAC,EACD,CAAC,UAAU,EAAE,yBAAyB,CAAC,CACxC,CAAC;IAEF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,uBAAuB,GAAG,UAAU,CAAC,IAAI,CAC7C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA,CACvD,CAAC;QACF,IAAI,CAAA,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,IAAI,OAAK,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,CAAA;YAC1D,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;IACvD,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAE9D,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAGpC,CAAC,YAAY,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;QACnC,OAAO,CACL,oBAAC,wBAAQ,IAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,UAAU,IAC9C,gBAAgB;YACf,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC;YACtC,CAAC,CAAC,YAAY,CAAC,KAAK,CACb,CACZ,CAAC;IACJ,CAAC,EACD,CAAC,gBAAgB,CAAC,CACnB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,kBAAkB;QAC/B,oBAAC,wBAAQ,IACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,EAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,2BAAY,CAAC,SAAS,CAAC,8BAA8B,CAAC;gBACnE,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,OAAO;aACd,EACD,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,IAAI,GAC1B,CACE,CACP,CAAC;AACJ,CAAC;AArED,8EAqEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport type { ComboBoxProps, SelectOption } from \"@itwin/itwinui-react\";\nimport { ComboBox, MenuItem } from \"@itwin/itwinui-react\";\nimport { UiComponents } from \"../UiComponents\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleProperty]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRulePropertyProps {\n /** List of available properties. */\n properties: PropertyDescription[];\n /** Currently selected property. */\n selectedProperty?: PropertyDescription;\n /** Callback that is invoked when selected property changes. */\n onSelectedPropertyChanged: (property?: PropertyDescription) => void;\n /** Custom renderer for property item inside selector. */\n propertyRenderer?: (name: string) => React.ReactNode;\n /** Specifies whether selector should be disabled or not. */\n isDisabled?: boolean;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] property selector.\n * @internal\n */\nexport function PropertyFilterBuilderRuleProperty(\n props: PropertyFilterBuilderRulePropertyProps\n) {\n const {\n selectedProperty,\n properties,\n onSelectedPropertyChanged,\n propertyRenderer,\n isDisabled,\n } = props;\n\n const selectOptions = React.useMemo<SelectOption<string>[]>(\n () =>\n properties.map((property) => ({\n id: property.name,\n label: property.displayLabel,\n value: property.name,\n })),\n [properties]\n );\n\n const onPropertyChanged = React.useCallback(\n (name: string) => {\n onSelectedPropertyChanged(\n properties.find((property) => property.name === name)\n );\n },\n [properties, onSelectedPropertyChanged]\n );\n\n React.useEffect(() => {\n const currentSelectedProperty = properties.find(\n (property) => property.name === selectedProperty?.name\n );\n if (currentSelectedProperty?.name !== selectedProperty?.name)\n onSelectedPropertyChanged(currentSelectedProperty);\n }, [properties, selectedProperty, onSelectedPropertyChanged]);\n\n const itemRenderer = React.useCallback<\n Required<ComboBoxProps<string>>[\"itemRenderer\"]\n >(\n (selectOption, { isSelected, id }) => {\n return (\n <MenuItem key={id} id={id} isSelected={isSelected}>\n {propertyRenderer\n ? propertyRenderer(selectOption.value)\n : selectOption.label}\n </MenuItem>\n );\n },\n [propertyRenderer]\n );\n\n return (\n <div className=\"fb-property-name\">\n <ComboBox\n options={selectOptions}\n onChange={onPropertyChanged}\n value={selectedProperty?.name}\n inputProps={{\n placeholder: UiComponents.translate(\"filterBuilder.chooseProperty\"),\n disabled: isDisabled,\n size: \"small\",\n }}\n itemRenderer={itemRenderer}\n enableVirtualization={true}\n />\n </div>\n );\n}\n"]}
@@ -1,9 +1,9 @@
1
1
  /** @packageDocumentation
2
2
  * @module PropertyFilterBuilder
3
3
  */
4
- /// <reference types="react" />
4
+ import * as React from "react";
5
5
  import type { PropertyDescription, PropertyValue } from "@itwin/appui-abstract";
6
- import type { PropertyFilterRuleOperator } from "./Operators";
6
+ import type { PropertyFilterBuilderRuleOperator } from "./Operators";
7
7
  /**
8
8
  * Props for [[PropertyFilterBuilderRuleValue]] component.
9
9
  * @beta
@@ -22,11 +22,11 @@ export interface PropertyFilterBuilderRuleValueProps {
22
22
  */
23
23
  export interface PropertyFilterBuilderRuleValueRendererProps extends PropertyFilterBuilderRuleValueProps {
24
24
  /** Current operator. */
25
- operator: PropertyFilterRuleOperator;
25
+ operator: PropertyFilterBuilderRuleOperator;
26
26
  }
27
27
  /**
28
28
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
29
29
  * @beta
30
30
  */
31
- export declare function PropertyFilterBuilderRuleValue(props: PropertyFilterBuilderRuleValueProps): JSX.Element;
31
+ export declare function PropertyFilterBuilderRuleValue(props: PropertyFilterBuilderRuleValueRendererProps): React.JSX.Element;
32
32
  //# sourceMappingURL=FilterBuilderRuleValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAIhF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,2CACf,SAAQ,mCAAmC;IAC3C,wBAAwB;IACxB,QAAQ,EAAE,0BAA0B,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,mCAAmC,eA2B3C"}
1
+ {"version":3,"file":"FilterBuilderRuleValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAMhF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAGrE;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,mDAAmD;IACnD,QAAQ,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,WAAW,2CACf,SAAQ,mCAAmC;IAC3C,wBAAwB;IACxB,QAAQ,EAAE,iCAAiC,CAAC;CAC7C;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,2CAA2C,qBASnD"}
@@ -34,12 +34,19 @@ exports.PropertyFilterBuilderRuleValue = void 0;
34
34
  const React = __importStar(require("react"));
35
35
  const appui_abstract_1 = require("@itwin/appui-abstract");
36
36
  const EditorContainer_1 = require("../editors/EditorContainer");
37
+ const itwinui_react_1 = require("@itwin/itwinui-react");
38
+ const FilterBuilderRangeValue_1 = require("./FilterBuilderRangeValue");
39
+ const UiComponents_1 = require("../UiComponents");
37
40
  /**
38
41
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
39
42
  * @beta
40
43
  */
41
44
  function PropertyFilterBuilderRuleValue(props) {
42
- const { value, property, onChange } = props;
45
+ const { operator, ...restProps } = props;
46
+ return operator === "between" || operator === "not-between" ? (React.createElement(FilterBuilderRuleRangeValueRenderer, { ...restProps })) : (React.createElement(FilterBuilderRulePrimitiveValueRenderer, { ...restProps }));
47
+ }
48
+ exports.PropertyFilterBuilderRuleValue = PropertyFilterBuilderRuleValue;
49
+ function FilterBuilderRulePrimitiveValueRenderer({ property, value, onChange, }) {
43
50
  const propertyRecord = React.useMemo(() => {
44
51
  return new appui_abstract_1.PropertyRecord(value !== null && value !== void 0 ? value : { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive }, property);
45
52
  }, [value, property]);
@@ -48,5 +55,36 @@ function PropertyFilterBuilderRuleValue(props) {
48
55
  }, [onChange]);
49
56
  return (React.createElement(EditorContainer_1.EditorContainer, { propertyRecord: propertyRecord, onCancel: /* istanbul ignore next */ () => { }, onCommit: onValueChange, setFocus: false, shouldCommitOnChange: false }));
50
57
  }
51
- exports.PropertyFilterBuilderRuleValue = PropertyFilterBuilderRuleValue;
58
+ function FilterBuilderRuleRangeValueRenderer({ property, value, onChange, }) {
59
+ const { from, to } = React.useMemo(() => {
60
+ const rangeValue = FilterBuilderRangeValue_1.PropertyFilterBuilderRuleRangeValue.parse(value);
61
+ return {
62
+ from: new appui_abstract_1.PropertyRecord(rangeValue.from, property),
63
+ to: new appui_abstract_1.PropertyRecord(rangeValue.to, property),
64
+ };
65
+ }, [property, value]);
66
+ const handleFromValue = React.useCallback(({ newValue }) => {
67
+ onChange(getSerializedRangeValue(newValue, to.value));
68
+ }, [onChange, to]);
69
+ const handleToValue = React.useCallback(({ newValue }) => {
70
+ onChange(getSerializedRangeValue(from.value, newValue));
71
+ }, [onChange, from]);
72
+ return (React.createElement(itwinui_react_1.Flex, { className: "rule-value-range", display: "inline-flex", flexDirection: "row" },
73
+ React.createElement(itwinui_react_1.Flex.Item, null,
74
+ React.createElement(EditorContainer_1.EditorContainer, { propertyRecord: from, onCancel: /* istanbul ignore next */ () => { }, onCommit: handleFromValue, setFocus: false, shouldCommitOnChange: false })),
75
+ React.createElement(itwinui_react_1.Text, null, UiComponents_1.UiComponents.translate("filterBuilder.operators.and").toLowerCase()),
76
+ React.createElement(itwinui_react_1.Flex.Item, null,
77
+ React.createElement(EditorContainer_1.EditorContainer, { propertyRecord: to, onCancel: /* istanbul ignore next */ () => { }, onCommit: handleToValue, setFocus: false, shouldCommitOnChange: false }))));
78
+ }
79
+ // istanbul ignore next
80
+ function getSerializedRangeValue(from, to) {
81
+ return FilterBuilderRangeValue_1.PropertyFilterBuilderRuleRangeValue.serialize({
82
+ from: from.valueFormat === appui_abstract_1.PropertyValueFormat.Primitive
83
+ ? from
84
+ : { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
85
+ to: to.valueFormat === appui_abstract_1.PropertyValueFormat.Primitive
86
+ ? to
87
+ : { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
88
+ });
89
+ }
52
90
  //# sourceMappingURL=FilterBuilderRuleValue.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAE/B,0DAA4E;AAE5E,gEAA6D;AA0B7D;;;GAGG;AACH,SAAgB,8BAA8B,CAC5C,KAA0C;IAE1C,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAE5C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACxC,OAAO,IAAI,+BAAc,CACvB,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE,EACvD,QAAQ,CACT,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CACrC,CAAC,EAAE,QAAQ,EAAuB,EAAE,EAAE;QACpC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrB,CAAC,EACD,CAAC,QAAQ,CAAC,CACX,CAAC;IAEF,OAAO,CACL,oBAAC,iCAAe,IACd,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,0BAA0B,CAAC,GAAG,EAAE,GAAE,CAAC,EAC7C,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,KAAK,EACf,oBAAoB,EAAE,KAAK,GAC3B,CACH,CAAC;AACJ,CAAC;AA5BD,wEA4BC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { PropertyUpdatedArgs } from \"../editors/EditorContainer\";\nimport { EditorContainer } from \"../editors/EditorContainer\";\nimport type { PropertyFilterRuleOperator } from \"./Operators\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleValue]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueProps {\n /** Currently entered value. */\n value?: PropertyValue;\n /** Property used in rule to which this value will be compared to. */\n property: PropertyDescription;\n /** Callback that is invoked when value changes. */\n onChange: (value: PropertyValue) => void;\n}\n\n/**\n * Props for custom [[PropertyFilterBuilderRuleValue]] renderer.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueRendererProps\n extends PropertyFilterBuilderRuleValueProps {\n /** Current operator. */\n operator: PropertyFilterRuleOperator;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.\n * @beta\n */\nexport function PropertyFilterBuilderRuleValue(\n props: PropertyFilterBuilderRuleValueProps\n) {\n const { value, property, onChange } = props;\n\n const propertyRecord = React.useMemo(() => {\n return new PropertyRecord(\n value ?? { valueFormat: PropertyValueFormat.Primitive },\n property\n );\n }, [value, property]);\n\n const onValueChange = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(newValue);\n },\n [onChange]\n );\n\n return (\n <EditorContainer\n propertyRecord={propertyRecord}\n onCancel={/* istanbul ignore next */ () => {}}\n onCommit={onValueChange}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"FilterBuilderRuleValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleValue.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module PropertyFilterBuilder\n */\n\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyRecord, PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport type { PropertyUpdatedArgs } from \"../editors/EditorContainer\";\nimport { EditorContainer } from \"../editors/EditorContainer\";\nimport { Flex, Text } from \"@itwin/itwinui-react\";\nimport { PropertyFilterBuilderRuleRangeValue } from \"./FilterBuilderRangeValue\";\nimport type { PropertyFilterBuilderRuleOperator } from \"./Operators\";\nimport { UiComponents } from \"../UiComponents\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleValue]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueProps {\n /** Currently entered value. */\n value?: PropertyValue;\n /** Property used in rule to which this value will be compared to. */\n property: PropertyDescription;\n /** Callback that is invoked when value changes. */\n onChange: (value: PropertyValue) => void;\n}\n\n/**\n * Props for custom [[PropertyFilterBuilderRuleValue]] renderer.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleValueRendererProps\n extends PropertyFilterBuilderRuleValueProps {\n /** Current operator. */\n operator: PropertyFilterBuilderRuleOperator;\n}\n\n/**\n * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.\n * @beta\n */\nexport function PropertyFilterBuilderRuleValue(\n props: PropertyFilterBuilderRuleValueRendererProps\n) {\n const { operator, ...restProps } = props;\n\n return operator === \"between\" || operator === \"not-between\" ? (\n <FilterBuilderRuleRangeValueRenderer {...restProps} />\n ) : (\n <FilterBuilderRulePrimitiveValueRenderer {...restProps} />\n );\n}\n\nfunction FilterBuilderRulePrimitiveValueRenderer({\n property,\n value,\n onChange,\n}: PropertyFilterBuilderRuleValueProps) {\n const propertyRecord = React.useMemo(() => {\n return new PropertyRecord(\n value ?? { valueFormat: PropertyValueFormat.Primitive },\n property\n );\n }, [value, property]);\n\n const onValueChange = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(newValue);\n },\n [onChange]\n );\n\n return (\n <EditorContainer\n propertyRecord={propertyRecord}\n onCancel={/* istanbul ignore next */ () => {}}\n onCommit={onValueChange}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n );\n}\n\nfunction FilterBuilderRuleRangeValueRenderer({\n property,\n value,\n onChange,\n}: PropertyFilterBuilderRuleValueProps) {\n const { from, to } = React.useMemo(() => {\n const rangeValue = PropertyFilterBuilderRuleRangeValue.parse(value);\n return {\n from: new PropertyRecord(rangeValue.from, property),\n to: new PropertyRecord(rangeValue.to, property),\n };\n }, [property, value]);\n\n const handleFromValue = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(getSerializedRangeValue(newValue, to.value));\n },\n [onChange, to]\n );\n\n const handleToValue = React.useCallback(\n ({ newValue }: PropertyUpdatedArgs) => {\n onChange(getSerializedRangeValue(from.value, newValue));\n },\n [onChange, from]\n );\n\n return (\n <Flex\n className=\"rule-value-range\"\n display=\"inline-flex\"\n flexDirection=\"row\"\n >\n <Flex.Item>\n <EditorContainer\n propertyRecord={from}\n onCancel={/* istanbul ignore next */ () => {}}\n onCommit={handleFromValue}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n </Flex.Item>\n <Text>\n {UiComponents.translate(\"filterBuilder.operators.and\").toLowerCase()}\n </Text>\n <Flex.Item>\n <EditorContainer\n propertyRecord={to}\n onCancel={/* istanbul ignore next */ () => {}}\n onCommit={handleToValue}\n setFocus={false}\n shouldCommitOnChange={false}\n />\n </Flex.Item>\n </Flex>\n );\n}\n\n// istanbul ignore next\nfunction getSerializedRangeValue(from: PropertyValue, to: PropertyValue) {\n return PropertyFilterBuilderRuleRangeValue.serialize({\n from:\n from.valueFormat === PropertyValueFormat.Primitive\n ? from\n : { valueFormat: PropertyValueFormat.Primitive },\n to:\n to.valueFormat === PropertyValueFormat.Primitive\n ? to\n : { valueFormat: PropertyValueFormat.Primitive },\n });\n}\n"]}