@itwin/components-react 4.9.0-dev.1 → 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 (399) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/lib/cjs/components-react/common/DelayedSpinner.d.ts +2 -3
  3. package/lib/cjs/components-react/common/DelayedSpinner.d.ts.map +1 -1
  4. package/lib/cjs/components-react/common/DelayedSpinner.js +1 -1
  5. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  6. package/lib/cjs/components-react/common/HighlightedText.d.ts +2 -2
  7. package/lib/cjs/components-react/common/HighlightedText.d.ts.map +1 -1
  8. package/lib/cjs/components-react/datepicker/DateField.d.ts +2 -2
  9. package/lib/cjs/components-react/datepicker/DateField.d.ts.map +1 -1
  10. package/lib/cjs/components-react/datepicker/DateField.scss +5 -2
  11. package/lib/cjs/components-react/datepicker/DatePicker.d.ts +2 -2
  12. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  13. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  14. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  15. package/lib/cjs/components-react/datepicker/TimeField.d.ts +2 -2
  16. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  17. package/lib/cjs/components-react/datepicker/TimeField.js +4 -8
  18. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  19. package/lib/cjs/components-react/datepicker/TimeField.scss +6 -3
  20. package/lib/cjs/components-react/editors/BooleanEditor.d.ts +1 -1
  21. package/lib/cjs/components-react/editors/BooleanEditor.js +1 -1
  22. package/lib/cjs/components-react/editors/BooleanEditor.js.map +1 -1
  23. package/lib/cjs/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  24. package/lib/cjs/components-react/editors/CustomNumberEditor.js +1 -1
  25. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  26. package/lib/cjs/components-react/editors/CustomNumberEditor.scss +5 -3
  27. package/lib/cjs/components-react/editors/EditorContainer.d.ts +1 -1
  28. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  29. package/lib/cjs/components-react/editors/EnumEditor.d.ts +1 -1
  30. package/lib/cjs/components-react/editors/EnumEditor.d.ts.map +1 -1
  31. package/lib/cjs/components-react/editors/EnumEditor.js +1 -8
  32. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  33. package/lib/cjs/components-react/editors/EnumEditor.scss +6 -4
  34. package/lib/cjs/components-react/editors/IconEditor.d.ts +1 -1
  35. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  36. package/lib/cjs/components-react/editors/NumericInputEditor.js +1 -1
  37. package/lib/cjs/components-react/editors/NumericInputEditor.js.map +1 -1
  38. package/lib/cjs/components-react/editors/NumericInputEditor.scss +5 -3
  39. package/lib/cjs/components-react/editors/PopupButton.d.ts +2 -2
  40. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  41. package/lib/cjs/components-react/editors/SliderEditor.d.ts.map +1 -1
  42. package/lib/cjs/components-react/editors/SliderEditor.js +2 -5
  43. package/lib/cjs/components-react/editors/SliderEditor.js.map +1 -1
  44. package/lib/cjs/components-react/editors/TextEditor.d.ts.map +1 -1
  45. package/lib/cjs/components-react/editors/TextEditor.js +1 -1
  46. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  47. package/lib/cjs/components-react/editors/TextEditor.scss +5 -3
  48. package/lib/cjs/components-react/editors/TextareaEditor.d.ts +0 -1
  49. package/lib/cjs/components-react/editors/TextareaEditor.d.ts.map +1 -1
  50. package/lib/cjs/components-react/editors/TextareaEditor.js +3 -4
  51. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  52. package/lib/cjs/components-react/editors/ToggleEditor.d.ts +1 -1
  53. package/lib/cjs/components-react/editors/ToggleEditor.js +1 -1
  54. package/lib/cjs/components-react/editors/ToggleEditor.js.map +1 -1
  55. package/lib/cjs/components-react/editors/ToggleEditor.scss +8 -2
  56. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  57. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  58. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  59. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  60. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +3 -7
  61. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  62. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  63. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  64. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +1 -73
  65. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  66. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  67. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  68. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js +30 -0
  69. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  70. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  71. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  72. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js +76 -0
  73. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +15 -9
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +37 -22
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  80. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  81. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -40
  82. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  83. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  84. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  85. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  86. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +43 -6
  87. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  88. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  89. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  90. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  91. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  92. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  93. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  94. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +40 -2
  95. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  96. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  97. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  98. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +151 -44
  99. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  100. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  101. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  102. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js +30 -0
  103. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  104. package/lib/cjs/components-react/filter-builder/Operators.d.ts +24 -19
  105. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  106. package/lib/cjs/components-react/filter-builder/Operators.js +40 -64
  107. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  108. package/lib/cjs/components-react/filter-builder/Types.d.ts +2 -2
  109. package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
  110. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  111. package/lib/cjs/components-react/filtering/FilteringInput.d.ts +1 -1
  112. package/lib/cjs/components-react/filtering/ResultSelector.d.ts +1 -1
  113. package/lib/cjs/components-react/filtering/ResultSelector.scss +1 -1
  114. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  115. package/lib/cjs/components-react/inputs/ParsedInput.scss +4 -1
  116. package/lib/cjs/components-react/properties/LinkHandler.d.ts +1 -1
  117. package/lib/cjs/components-react/properties/LinkHandler.d.ts.map +1 -1
  118. package/lib/cjs/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  119. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  120. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  121. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  122. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts +1 -1
  123. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  124. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  125. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  126. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  127. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  128. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  129. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  130. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  131. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  132. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  133. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  134. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  135. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  136. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  137. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  138. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  139. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  140. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.d.ts.map +1 -1
  141. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -4
  142. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  143. package/lib/cjs/components-react/propertygrid/component/PropertyGrid.scss +17 -0
  144. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  145. package/lib/cjs/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  146. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  147. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +3 -2
  148. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  149. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  150. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  151. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts +2 -2
  152. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  153. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  154. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  155. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts +1 -1
  156. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  157. package/lib/cjs/components-react/toolbar/Items.d.ts +1 -1
  158. package/lib/cjs/components-react/toolbar/Items.d.ts.map +1 -1
  159. package/lib/cjs/components-react/toolbar/Overflow.d.ts +1 -1
  160. package/lib/cjs/components-react/toolbar/Overflow.d.ts.map +1 -1
  161. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts +1 -1
  162. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  163. package/lib/cjs/components-react/toolbar/PopupItem.d.ts +2 -2
  164. package/lib/cjs/components-react/toolbar/PopupItem.d.ts.map +1 -1
  165. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  166. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  167. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  168. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  169. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +1 -1
  170. package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
  171. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  172. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  173. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  174. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  175. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  176. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  177. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  178. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  179. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  180. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  181. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  182. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  183. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  184. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  185. package/lib/cjs/components-react/tree/controlled/TreeHooks.js +22 -1
  186. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  187. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  188. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  189. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  190. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  191. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  192. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  193. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  194. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  195. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  196. package/lib/cjs/components-react.d.ts +3 -0
  197. package/lib/cjs/components-react.d.ts.map +1 -1
  198. package/lib/cjs/components-react.js +3 -0
  199. package/lib/cjs/components-react.js.map +1 -1
  200. package/lib/esm/components-react/common/DelayedSpinner.d.ts +2 -3
  201. package/lib/esm/components-react/common/DelayedSpinner.d.ts.map +1 -1
  202. package/lib/esm/components-react/common/DelayedSpinner.js +1 -1
  203. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  204. package/lib/esm/components-react/common/HighlightedText.d.ts +2 -2
  205. package/lib/esm/components-react/common/HighlightedText.d.ts.map +1 -1
  206. package/lib/esm/components-react/datepicker/DateField.d.ts +2 -2
  207. package/lib/esm/components-react/datepicker/DateField.d.ts.map +1 -1
  208. package/lib/esm/components-react/datepicker/DateField.scss +5 -2
  209. package/lib/esm/components-react/datepicker/DatePicker.d.ts +2 -2
  210. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  211. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  212. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  213. package/lib/esm/components-react/datepicker/TimeField.d.ts +2 -2
  214. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  215. package/lib/esm/components-react/datepicker/TimeField.js +4 -5
  216. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  217. package/lib/esm/components-react/datepicker/TimeField.scss +6 -3
  218. package/lib/esm/components-react/editors/BooleanEditor.d.ts +1 -1
  219. package/lib/esm/components-react/editors/BooleanEditor.js +1 -1
  220. package/lib/esm/components-react/editors/BooleanEditor.js.map +1 -1
  221. package/lib/esm/components-react/editors/CustomNumberEditor.d.ts.map +1 -1
  222. package/lib/esm/components-react/editors/CustomNumberEditor.js +1 -1
  223. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  224. package/lib/esm/components-react/editors/CustomNumberEditor.scss +5 -3
  225. package/lib/esm/components-react/editors/EditorContainer.d.ts +1 -1
  226. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  227. package/lib/esm/components-react/editors/EnumEditor.d.ts +1 -1
  228. package/lib/esm/components-react/editors/EnumEditor.d.ts.map +1 -1
  229. package/lib/esm/components-react/editors/EnumEditor.js +1 -8
  230. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  231. package/lib/esm/components-react/editors/EnumEditor.scss +6 -4
  232. package/lib/esm/components-react/editors/IconEditor.d.ts +1 -1
  233. package/lib/esm/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  234. package/lib/esm/components-react/editors/NumericInputEditor.js +1 -1
  235. package/lib/esm/components-react/editors/NumericInputEditor.js.map +1 -1
  236. package/lib/esm/components-react/editors/NumericInputEditor.scss +5 -3
  237. package/lib/esm/components-react/editors/PopupButton.d.ts +2 -2
  238. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  239. package/lib/esm/components-react/editors/SliderEditor.d.ts.map +1 -1
  240. package/lib/esm/components-react/editors/SliderEditor.js +2 -5
  241. package/lib/esm/components-react/editors/SliderEditor.js.map +1 -1
  242. package/lib/esm/components-react/editors/TextEditor.d.ts.map +1 -1
  243. package/lib/esm/components-react/editors/TextEditor.js +1 -1
  244. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  245. package/lib/esm/components-react/editors/TextEditor.scss +5 -3
  246. package/lib/esm/components-react/editors/TextareaEditor.d.ts +0 -1
  247. package/lib/esm/components-react/editors/TextareaEditor.d.ts.map +1 -1
  248. package/lib/esm/components-react/editors/TextareaEditor.js +3 -4
  249. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  250. package/lib/esm/components-react/editors/ToggleEditor.d.ts +1 -1
  251. package/lib/esm/components-react/editors/ToggleEditor.js +1 -1
  252. package/lib/esm/components-react/editors/ToggleEditor.js.map +1 -1
  253. package/lib/esm/components-react/editors/ToggleEditor.scss +8 -2
  254. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  255. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  256. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  257. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  258. package/lib/esm/components-react/filter-builder/FilterBuilder.js +4 -8
  259. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  260. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  261. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  262. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +0 -71
  263. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  264. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  265. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  266. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js +23 -0
  267. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  268. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  269. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  270. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js +73 -0
  271. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  272. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  273. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  274. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +19 -13
  275. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  276. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +37 -22
  277. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  278. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  279. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +17 -42
  280. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  281. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  282. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  283. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  284. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +41 -5
  285. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  286. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  287. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  288. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  289. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  290. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  291. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  292. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +39 -1
  293. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  294. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  295. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  296. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +149 -42
  297. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  298. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  299. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  300. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js +23 -0
  301. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  302. package/lib/esm/components-react/filter-builder/Operators.d.ts +24 -19
  303. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  304. package/lib/esm/components-react/filter-builder/Operators.js +37 -61
  305. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  306. package/lib/esm/components-react/filter-builder/Types.d.ts +2 -2
  307. package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
  308. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  309. package/lib/esm/components-react/filtering/FilteringInput.d.ts +1 -1
  310. package/lib/esm/components-react/filtering/ResultSelector.d.ts +1 -1
  311. package/lib/esm/components-react/filtering/ResultSelector.scss +1 -1
  312. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  313. package/lib/esm/components-react/inputs/ParsedInput.scss +4 -1
  314. package/lib/esm/components-react/properties/LinkHandler.d.ts +1 -1
  315. package/lib/esm/components-react/properties/LinkHandler.d.ts.map +1 -1
  316. package/lib/esm/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  317. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  318. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  319. package/lib/esm/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  320. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts +1 -1
  321. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  322. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  323. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  324. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  325. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  326. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  327. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  328. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  329. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  330. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  331. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  332. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  333. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  334. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  335. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  336. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  337. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  338. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.d.ts.map +1 -1
  339. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -4
  340. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  341. package/lib/esm/components-react/propertygrid/component/PropertyGrid.scss +17 -0
  342. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  343. package/lib/esm/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  344. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  345. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.scss +3 -2
  346. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  347. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  348. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  349. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts +2 -2
  350. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  351. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  352. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  353. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts +1 -1
  354. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  355. package/lib/esm/components-react/toolbar/Items.d.ts +1 -1
  356. package/lib/esm/components-react/toolbar/Items.d.ts.map +1 -1
  357. package/lib/esm/components-react/toolbar/Overflow.d.ts +1 -1
  358. package/lib/esm/components-react/toolbar/Overflow.d.ts.map +1 -1
  359. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts +1 -1
  360. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  361. package/lib/esm/components-react/toolbar/PopupItem.d.ts +2 -2
  362. package/lib/esm/components-react/toolbar/PopupItem.d.ts.map +1 -1
  363. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  364. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  365. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  366. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  367. package/lib/esm/components-react/toolbar/Toolbar.d.ts +1 -1
  368. package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
  369. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  370. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  371. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  372. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  373. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  374. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  375. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  376. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  377. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  378. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  379. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  380. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  381. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  382. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  383. package/lib/esm/components-react/tree/controlled/TreeHooks.js +21 -1
  384. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  385. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  386. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  387. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  388. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  389. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  390. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  391. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  392. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  393. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  394. package/lib/esm/components-react.d.ts +3 -0
  395. package/lib/esm/components-react.d.ts.map +1 -1
  396. package/lib/esm/components-react.js +3 -0
  397. package/lib/esm/components-react.js.map +1 -1
  398. package/lib/public/locales/en/UiComponents.json +12 -7
  399. package/package.json +10 -11
@@ -7,67 +7,42 @@
7
7
  */
8
8
  import "./FilterBuilderRuleGroup.scss";
9
9
  import * as React from "react";
10
- import { SvgAdd, SvgDelete } from "@itwin/itwinui-icons-react";
11
- import { Button, IconButton, Select } from "@itwin/itwinui-react";
12
- import { UiComponents } from "../UiComponents";
13
- import { ActiveRuleGroupContext, PropertyFilterBuilderContext, } from "./FilterBuilderContext";
10
+ import { Flex } from "@itwin/itwinui-react";
11
+ import { PropertyFilterBuilderContext } from "./FilterBuilderContext";
14
12
  import { PropertyFilterBuilderRuleRenderer } from "./FilterBuilderRule";
15
13
  import { isPropertyFilterBuilderRuleGroup } from "./FilterBuilderState";
16
- import { PropertyFilterRuleGroupOperator } from "./Operators";
14
+ import { PropertyFilterBuilderLogicalOperator } from "./FilterBuilderLogicalOperator";
17
15
  /**
18
16
  * Component that renders group of rules in [[PropertyFilterBuilder]] component.
19
17
  * @internal
20
18
  */
21
19
  export function PropertyFilterBuilderRuleGroupRenderer(props) {
22
- const { path, group } = props;
23
- const { actions, ruleGroupDepthLimit } = React.useContext(PropertyFilterBuilderContext);
24
- const { onNewRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);
25
- const handleAddRule = (ruleType) => {
26
- actions.addItem(path, ruleType);
27
- onNewRuleAdded();
28
- };
29
- const removeGroup = () => actions.removeItem(path);
20
+ const { path, group, isGroupOperatorDisabled } = props;
21
+ const { actions } = React.useContext(PropertyFilterBuilderContext);
22
+ const { onRuleAdded, groupRef } = useRulePropertyFocus(group.items.length);
30
23
  const onOperatorChange = React.useCallback((operator) => {
31
24
  actions.setRuleGroupOperator(path, operator);
32
25
  }, [path, actions]);
33
- const allowToAddGroup = ruleGroupDepthLimit === undefined || path.length < ruleGroupDepthLimit;
34
- const { focusedElement, hoveredElement, ...eventHandlers } = React.useContext(ActiveRuleGroupContext);
35
26
  const showOperator = group.items.length > 1;
36
- return (React.createElement("div", { ref: groupRef, className: "rule-group", "data-isactive": groupRef.current === focusedElement ||
37
- groupRef.current === hoveredElement, ...eventHandlers },
38
- React.createElement("div", { className: "rule-group-remove-action" }, group.groupId !== undefined && (React.createElement(IconButton, { "data-testid": "rule-group-remove", onClick: removeGroup, styleType: "borderless", size: "small" },
39
- React.createElement(SvgDelete, null)))),
40
- React.createElement("div", { className: "rule-group-content" },
41
- showOperator ? (React.createElement(PropertyFilterBuilderRuleGroupOperator, { operator: group.operator, onChange: onOperatorChange })) : null,
42
- 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 })))),
43
- React.createElement("div", { className: "rule-group-actions" },
44
- React.createElement(Button, { className: "rule-group-button", key: "add-rule-button", "data-testid": "rule-group-add-rule", onClick: () => handleAddRule("RULE"), styleType: "borderless", size: "small", startIcon: React.createElement(SvgAdd, null) }, UiComponents.translate("filterBuilder.rule")),
45
- allowToAddGroup && (React.createElement(Button, { className: "rule-group-button", key: "add-rule-group-button", "data-testid": "rule-group-add-rule-group", onClick: () => handleAddRule("RULE_GROUP"), styleType: "borderless", size: "small", startIcon: React.createElement(SvgAdd, null) }, UiComponents.translate("filterBuilder.ruleGroup")))))));
27
+ return (React.createElement(Flex, { ref: groupRef, style: { alignSelf: "flex-start" }, className: "fb-group", gap: "0px" },
28
+ showOperator ? (React.createElement(PropertyFilterBuilderRuleGroupOperator, { operator: group.operator, onChange: onOperatorChange, isGroupOperatorDisabled: isGroupOperatorDisabled })) : null,
29
+ React.createElement("div", { className: "fb-wrapper" }, group.items.map((item) => (React.createElement("div", { className: "fb-row", key: item.id },
30
+ React.createElement(PropertyFilterBuilderGroupOrRule, { path: path, item: item, onRuleAdded: onRuleAdded })))))));
46
31
  }
47
32
  /**
48
33
  * Component that renders [[PropertyFilterBuilderRuleGroup]] operator selector.
49
34
  * @internal
50
35
  */
51
36
  export function PropertyFilterBuilderRuleGroupOperator(props) {
52
- const { operator, onChange } = props;
53
- const options = React.useMemo(() => [
54
- {
55
- value: PropertyFilterRuleGroupOperator.And,
56
- label: UiComponents.translate("filterBuilder.operators.and"),
57
- },
58
- {
59
- value: PropertyFilterRuleGroupOperator.Or,
60
- label: UiComponents.translate("filterBuilder.operators.or"),
61
- },
62
- ], []);
63
- return (React.createElement("div", { className: "rule-group-operator" },
64
- React.createElement(Select, { options: options, value: operator, onChange: onChange, size: "small" })));
37
+ const { operator, isGroupOperatorDisabled, onChange } = props;
38
+ return (React.createElement(Flex.Item, { alignSelf: "stretch" },
39
+ React.createElement(PropertyFilterBuilderLogicalOperator, { className: "fb-group-operator", operator: operator, onOperatorChange: onChange, isDisabled: isGroupOperatorDisabled })));
65
40
  }
66
- const PropertyFilterBuilderGroupOrRule = React.memo(function PropertyFilterBuilderGroupOrRule({ path, item, isRemovable, }) {
41
+ const PropertyFilterBuilderGroupOrRule = React.memo(function PropertyFilterBuilderGroupOrRule({ path, item, onRuleAdded, }) {
67
42
  const itemPath = [...path, item.id];
68
43
  if (isPropertyFilterBuilderRuleGroup(item))
69
44
  return (React.createElement(PropertyFilterBuilderRuleGroupRenderer, { path: itemPath, group: item }));
70
- return (React.createElement(PropertyFilterBuilderRuleRenderer, { path: itemPath, rule: item, isRemovable: isRemovable }));
45
+ return (React.createElement(PropertyFilterBuilderRuleRenderer, { path: itemPath, rule: item, onRuleAdded: onRuleAdded }));
71
46
  });
72
47
  const useRulePropertyFocus = (currentGroupItemsLength) => {
73
48
  const previousGroupItemsLength = React.useRef(0);
@@ -77,12 +52,12 @@ const useRulePropertyFocus = (currentGroupItemsLength) => {
77
52
  if (isNewRuleAdded.current &&
78
53
  previousGroupItemsLength.current < currentGroupItemsLength &&
79
54
  groupRef.current) {
80
- const ruleProperties = groupRef.current.querySelectorAll(".rule-property input");
55
+ const ruleProperties = groupRef.current.querySelectorAll(".fb-property-name input");
81
56
  ruleProperties[ruleProperties.length - 1].focus();
82
57
  isNewRuleAdded.current = false;
83
58
  }
84
59
  previousGroupItemsLength.current = currentGroupItemsLength;
85
60
  }, [currentGroupItemsLength]);
86
- return { onNewRuleAdded: () => (isNewRuleAdded.current = true), groupRef };
61
+ return { onRuleAdded: () => (isNewRuleAdded.current = true), groupRef };
87
62
  };
88
63
  //# sourceMappingURL=FilterBuilderRuleGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleGroup.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleGroup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,+BAA+B,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAKxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAa9D;;;GAGG;AACH,MAAM,UAAU,sCAAsC,CACpD,KAAkD;IAElD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IAC9B,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,GAAG,KAAK,CAAC,UAAU,CACvD,4BAA4B,CAC7B,CAAC;IACF,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAE9E,MAAM,aAAa,GAAG,CAAC,QAA+B,EAAE,EAAE;QACxD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChC,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC;IACF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CACxC,CAAC,QAAyC,EAAE,EAAE;QAC5C,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC,EACD,CAAC,IAAI,EAAE,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,eAAe,GACnB,mBAAmB,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC;IACzE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,UAAU,CAC3E,sBAAsB,CACvB,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAE5C,OAAO,CACL,6BACE,GAAG,EAAE,QAAQ,EACb,SAAS,EAAC,YAAY,mBAEpB,QAAQ,CAAC,OAAO,KAAK,cAAc;YACnC,QAAQ,CAAC,OAAO,KAAK,cAAc,KAEjC,aAAa;QAEjB,6BAAK,SAAS,EAAC,0BAA0B,IACtC,KAAK,CAAC,OAAO,KAAK,SAAS,IAAI,CAC9B,oBAAC,UAAU,mBACG,mBAAmB,EAC/B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,OAAO;YAEZ,oBAAC,SAAS,OAAG,CACF,CACd,CACG;QACN,6BAAK,SAAS,EAAC,oBAAoB;YAChC,YAAY,CAAC,CAAC,CAAC,CACd,oBAAC,sCAAsC,IACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,QAAQ,EAAE,gBAAgB,GAC1B,CACH,CAAC,CAAC,CAAC,IAAI;YACR,6BAAK,SAAS,EAAC,kBAAkB,IAC9B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACzB,oBAAC,gCAAgC,IAC/B,GAAG,EAAE,IAAI,CAAC,EAAE,EACZ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GACnC,CACH,CAAC,CACE;YACN,6BAAK,SAAS,EAAC,oBAAoB;gBACjC,oBAAC,MAAM,IACL,SAAS,EAAC,mBAAmB,EAC7B,GAAG,EAAC,iBAAiB,iBACT,qBAAqB,EACjC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,EACpC,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,oBAAC,MAAM,OAAG,IAEpB,YAAY,CAAC,SAAS,CAAC,oBAAoB,CAAC,CACtC;gBACR,eAAe,IAAI,CAClB,oBAAC,MAAM,IACL,SAAS,EAAC,mBAAmB,EAC7B,GAAG,EAAC,uBAAuB,iBACf,2BAA2B,EACvC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,EAC1C,SAAS,EAAC,YAAY,EACtB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,oBAAC,MAAM,OAAG,IAEpB,YAAY,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAC3C,CACV,CACG,CACF,CACF,CACP,CAAC;AACJ,CAAC;AAaD;;;GAGG;AACH,MAAM,UAAU,sCAAsC,CACpD,KAAkD;IAElD,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAErC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAG3B,GAAG,EAAE,CAAC;QACJ;YACE,KAAK,EAAE,+BAA+B,CAAC,GAAG;YAC1C,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,6BAA6B,CAAC;SAC7D;QACD;YACE,KAAK,EAAE,+BAA+B,CAAC,EAAE;YACzC,KAAK,EAAE,YAAY,CAAC,SAAS,CAAC,4BAA4B,CAAC;SAC5D;KACF,EACD,EAAE,CACH,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,qBAAqB;QAClC,oBAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,GACZ,CACE,CACP,CAAC;AACJ,CAAC;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,gCAAgC,CAAC,IAAI,CAAC;QACxC,OAAO,CACL,oBAAC,sCAAsC,IAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,GAAI,CACxE,CAAC;IACJ,OAAO,CACL,oBAAC,iCAAiC,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,sBAAsB,CACvB,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,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;AAC7E,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 { 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 className=\"rule-group-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 className=\"rule-group-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":"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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 { 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
- .rule-group-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"}
@@ -7,24 +7,60 @@
7
7
  */
8
8
  import * as React from "react";
9
9
  import { Select } from "@itwin/itwinui-react";
10
- import { getPropertyFilterOperatorLabel, getPropertyFilterOperators, } from "./Operators";
10
+ import { getPropertyFilterBuilderOperators } from "./Operators";
11
+ import { UiComponents } from "../UiComponents";
11
12
  /**
12
13
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] operator selector.
13
14
  * @internal
14
15
  */
15
- export function PropertyFilterBuilderRuleOperator(props) {
16
+ export function PropertyFilterBuilderRuleOperatorRenderer(props) {
16
17
  var _a;
17
18
  const { operator, property, onChange } = props;
18
- const availableOperators = React.useMemo(() => getPropertyFilterOperators(property), [property]);
19
+ const availableOperators = React.useMemo(() => getPropertyFilterBuilderOperators(property), [property]);
19
20
  const selectedOperator = (_a = availableOperators.find((op) => op === operator)) !== null && _a !== void 0 ? _a : availableOperators[0];
20
21
  React.useEffect(() => {
21
22
  onChange(selectedOperator);
22
23
  }, [onChange, selectedOperator]);
23
24
  const availableOptions = React.useMemo(() => availableOperators.map((op) => ({
24
25
  value: op,
25
- label: getPropertyFilterOperatorLabel(op),
26
+ label: getPropertyFilterBuilderOperatorLabel(op),
26
27
  })), [availableOperators]);
27
- return (React.createElement("div", { className: "rule-operator" },
28
+ return (React.createElement("div", { className: "fb-row-condition" },
28
29
  React.createElement(Select, { options: availableOptions, value: selectedOperator, onChange: onChange, size: "small" })));
29
30
  }
31
+ /* istanbul ignore next */
32
+ /**
33
+ * Function that returns display label for [[PropertyFilterBuilderRuleOperator]].
34
+ * @beta
35
+ */
36
+ export function getPropertyFilterBuilderOperatorLabel(operator) {
37
+ switch (operator) {
38
+ case "is-true":
39
+ return UiComponents.translate("filterBuilder.operators.isTrue");
40
+ case "is-false":
41
+ return UiComponents.translate("filterBuilder.operators.isFalse");
42
+ case "is-equal":
43
+ return UiComponents.translate("filterBuilder.operators.equal");
44
+ case "is-not-equal":
45
+ return UiComponents.translate("filterBuilder.operators.notEqual");
46
+ case "greater":
47
+ return ">";
48
+ case "greater-or-equal":
49
+ return ">=";
50
+ case "less":
51
+ return "<";
52
+ case "less-or-equal":
53
+ return "<=";
54
+ case "like":
55
+ return UiComponents.translate("filterBuilder.operators.contains");
56
+ case "is-null":
57
+ return UiComponents.translate("filterBuilder.operators.isNull");
58
+ case "is-not-null":
59
+ return UiComponents.translate("filterBuilder.operators.isNotNull");
60
+ case "between":
61
+ return UiComponents.translate("filterBuilder.operators.between");
62
+ case "not-between":
63
+ return UiComponents.translate("filterBuilder.operators.notBetween");
64
+ }
65
+ }
30
66
  //# 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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAerB;;;GAGG;AACH,MAAM,UAAU,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,0BAA0B,CAAC,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,8BAA8B,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC,EACL,CAAC,kBAAkB,CAAC,CACrB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,eAAe;QAC5B,oBAAC,MAAM,IACL,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAC,OAAO,GACZ,CACE,CACP,CAAC;AACJ,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 * 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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,iCAAiC,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAe/C;;;GAGG;AACH,MAAM,UAAU,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,iCAAiC,CAAC,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,MAAM,IACL,OAAO,EAAE,gBAAgB,EACzB,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,GACb,CACE,CACP,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B;;;GAGG;AACH,MAAM,UAAU,qCAAqC,CACnD,QAA2C;IAE3C,QAAQ,QAAQ,EAAE;QAChB,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,UAAU;YACb,OAAO,YAAY,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,KAAK,UAAU;YACb,OAAO,YAAY,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QACjE,KAAK,cAAc;YACjB,OAAO,YAAY,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,YAAY,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACpE,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAClE,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;QACrE,KAAK,SAAS;YACZ,OAAO,YAAY,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;QACnE,KAAK,aAAa;YAChB,OAAO,YAAY,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;KACvE;AACH,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 * 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;AAOjE;;;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"}
@@ -32,7 +32,7 @@ export function PropertyFilterBuilderRuleProperty(props) {
32
32
  ? propertyRenderer(selectOption.value)
33
33
  : selectOption.label));
34
34
  }, [propertyRenderer]);
35
- return (React.createElement("div", { className: "rule-property" },
35
+ return (React.createElement("div", { className: "fb-property-name" },
36
36
  React.createElement(ComboBox, { options: selectOptions, onChange: onPropertyChanged, value: selectedProperty === null || selectedProperty === void 0 ? void 0 : selectedProperty.name, inputProps: {
37
37
  placeholder: UiComponents.translate("filterBuilder.chooseProperty"),
38
38
  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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAqB/C;;;GAGG;AACH,MAAM,UAAU,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,QAAQ,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,QAAQ,IACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,EAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,YAAY,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","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 { SelectOption } from \"@itwin/itwinui-react\";\nimport { ComboBox, MenuItem } from \"@itwin/itwinui-react\";\nimport { UiComponents } from \"../UiComponents\";\n\ntype ComboBoxProps<T> = React.ComponentPropsWithoutRef<typeof ComboBox<T>>;\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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAmB/C;;;GAGG;AACH,MAAM,UAAU,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,QAAQ,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,QAAQ,IACP,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,EAAE,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,IAAI,EAC7B,UAAU,EAAE;gBACV,WAAW,EAAE,YAAY,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","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"}
@@ -8,12 +8,18 @@
8
8
  import * as React from "react";
9
9
  import { PropertyRecord, PropertyValueFormat } from "@itwin/appui-abstract";
10
10
  import { EditorContainer } from "../editors/EditorContainer";
11
+ import { Flex, Text } from "@itwin/itwinui-react";
12
+ import { PropertyFilterBuilderRuleRangeValue } from "./FilterBuilderRangeValue";
13
+ import { UiComponents } from "../UiComponents";
11
14
  /**
12
15
  * Component that renders [[PropertyFilterBuilderRuleRenderer]] value input.
13
16
  * @beta
14
17
  */
15
18
  export function PropertyFilterBuilderRuleValue(props) {
16
- const { value, property, onChange } = props;
19
+ const { operator, ...restProps } = props;
20
+ return operator === "between" || operator === "not-between" ? (React.createElement(FilterBuilderRuleRangeValueRenderer, { ...restProps })) : (React.createElement(FilterBuilderRulePrimitiveValueRenderer, { ...restProps }));
21
+ }
22
+ function FilterBuilderRulePrimitiveValueRenderer({ property, value, onChange, }) {
17
23
  const propertyRecord = React.useMemo(() => {
18
24
  return new PropertyRecord(value !== null && value !== void 0 ? value : { valueFormat: PropertyValueFormat.Primitive }, property);
19
25
  }, [value, property]);
@@ -22,4 +28,36 @@ export function PropertyFilterBuilderRuleValue(props) {
22
28
  }, [onChange]);
23
29
  return (React.createElement(EditorContainer, { propertyRecord: propertyRecord, onCancel: /* istanbul ignore next */ () => { }, onCommit: onValueChange, setFocus: false, shouldCommitOnChange: false }));
24
30
  }
31
+ function FilterBuilderRuleRangeValueRenderer({ property, value, onChange, }) {
32
+ const { from, to } = React.useMemo(() => {
33
+ const rangeValue = PropertyFilterBuilderRuleRangeValue.parse(value);
34
+ return {
35
+ from: new PropertyRecord(rangeValue.from, property),
36
+ to: new PropertyRecord(rangeValue.to, property),
37
+ };
38
+ }, [property, value]);
39
+ const handleFromValue = React.useCallback(({ newValue }) => {
40
+ onChange(getSerializedRangeValue(newValue, to.value));
41
+ }, [onChange, to]);
42
+ const handleToValue = React.useCallback(({ newValue }) => {
43
+ onChange(getSerializedRangeValue(from.value, newValue));
44
+ }, [onChange, from]);
45
+ return (React.createElement(Flex, { className: "rule-value-range", display: "inline-flex", flexDirection: "row" },
46
+ React.createElement(Flex.Item, null,
47
+ React.createElement(EditorContainer, { propertyRecord: from, onCancel: /* istanbul ignore next */ () => { }, onCommit: handleFromValue, setFocus: false, shouldCommitOnChange: false })),
48
+ React.createElement(Text, null, UiComponents.translate("filterBuilder.operators.and").toLowerCase()),
49
+ React.createElement(Flex.Item, null,
50
+ React.createElement(EditorContainer, { propertyRecord: to, onCancel: /* istanbul ignore next */ () => { }, onCommit: handleToValue, setFocus: false, shouldCommitOnChange: false }))));
51
+ }
52
+ // istanbul ignore next
53
+ function getSerializedRangeValue(from, to) {
54
+ return PropertyFilterBuilderRuleRangeValue.serialize({
55
+ from: from.valueFormat === PropertyValueFormat.Primitive
56
+ ? from
57
+ : { valueFormat: PropertyValueFormat.Primitive },
58
+ to: to.valueFormat === PropertyValueFormat.Primitive
59
+ ? to
60
+ : { valueFormat: PropertyValueFormat.Primitive },
61
+ });
62
+ }
25
63
  //# 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,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AA0B7D;;;GAGG;AACH,MAAM,UAAU,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,cAAc,CACvB,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,WAAW,EAAE,mBAAmB,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,eAAe,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","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"]}