@itwin/components-react 4.8.3 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/lib/cjs/components-react/UiComponents.d.ts.map +1 -1
  3. package/lib/cjs/components-react/UiComponents.js +1 -0
  4. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  5. package/lib/cjs/components-react/common/DelayedSpinner.d.ts +2 -2
  6. package/lib/cjs/components-react/common/DelayedSpinner.d.ts.map +1 -1
  7. package/lib/cjs/components-react/common/HighlightedText.d.ts +2 -2
  8. package/lib/cjs/components-react/common/HighlightedText.d.ts.map +1 -1
  9. package/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
  10. package/lib/cjs/components-react/common/ImageRenderer.js +1 -0
  11. package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
  12. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  13. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js +1 -0
  14. package/lib/cjs/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  15. package/lib/cjs/components-react/datepicker/DateField.d.ts +2 -2
  16. package/lib/cjs/components-react/datepicker/DateField.d.ts.map +1 -1
  17. package/lib/cjs/components-react/datepicker/DatePicker.d.ts +2 -2
  18. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  19. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  20. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  21. package/lib/cjs/components-react/datepicker/TimeField.d.ts +2 -2
  22. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  23. package/lib/cjs/components-react/editors/BooleanEditor.d.ts +1 -1
  24. package/lib/cjs/components-react/editors/EditorContainer.d.ts +1 -1
  25. package/lib/cjs/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  26. package/lib/cjs/components-react/editors/EnumEditor.d.ts +1 -1
  27. package/lib/cjs/components-react/editors/IconEditor.d.ts +1 -1
  28. package/lib/cjs/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  29. package/lib/cjs/components-react/editors/PopupButton.d.ts +2 -2
  30. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  31. package/lib/cjs/components-react/editors/ToggleEditor.d.ts +1 -1
  32. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  33. package/lib/cjs/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  34. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  35. package/lib/cjs/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  36. package/lib/cjs/components-react/filter-builder/FilterBuilder.js +3 -7
  37. package/lib/cjs/components-react/filter-builder/FilterBuilder.js.map +1 -1
  38. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  39. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  40. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js +1 -73
  41. package/lib/cjs/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  42. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  43. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  44. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js +30 -0
  45. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  46. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  47. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  48. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js +76 -0
  49. package/lib/cjs/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  50. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  51. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  52. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js +16 -12
  53. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  54. package/lib/cjs/components-react/filter-builder/FilterBuilderRule.scss +38 -29
  55. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  56. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  57. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js +15 -40
  58. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  59. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  60. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  61. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  62. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +43 -6
  63. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  64. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  65. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  66. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  67. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  68. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  69. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  70. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +40 -2
  71. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  72. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  73. package/lib/cjs/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  74. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +151 -44
  75. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  76. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  77. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  78. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js +30 -0
  79. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  80. package/lib/cjs/components-react/filter-builder/Operators.d.ts +24 -19
  81. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  82. package/lib/cjs/components-react/filter-builder/Operators.js +40 -64
  83. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  84. package/lib/cjs/components-react/filter-builder/Types.d.ts +2 -2
  85. package/lib/cjs/components-react/filter-builder/Types.d.ts.map +1 -1
  86. package/lib/cjs/components-react/filter-builder/Types.js.map +1 -1
  87. package/lib/cjs/components-react/filtering/FilteringInput.d.ts +1 -1
  88. package/lib/cjs/components-react/filtering/ResultSelector.d.ts +1 -1
  89. package/lib/cjs/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  90. package/lib/cjs/components-react/properties/LinkHandler.d.ts +1 -1
  91. package/lib/cjs/components-react/properties/LinkHandler.d.ts.map +1 -1
  92. package/lib/cjs/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  93. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  94. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  95. package/lib/cjs/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  96. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts +1 -1
  97. package/lib/cjs/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  98. package/lib/cjs/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  99. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  100. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  101. package/lib/cjs/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  102. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  103. package/lib/cjs/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  104. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  105. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  106. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  107. package/lib/cjs/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  108. package/lib/cjs/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  109. package/lib/cjs/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  110. package/lib/cjs/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  111. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  112. package/lib/cjs/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  113. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  114. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  115. package/lib/cjs/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  116. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  117. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  118. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  119. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +42 -10
  120. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  121. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts +12 -0
  122. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  123. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js +22 -1
  124. package/lib/cjs/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  125. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  126. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts +2 -2
  127. package/lib/cjs/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  128. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  129. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  130. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts +1 -1
  131. package/lib/cjs/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  132. package/lib/cjs/components-react/toolbar/Items.d.ts +1 -1
  133. package/lib/cjs/components-react/toolbar/Items.d.ts.map +1 -1
  134. package/lib/cjs/components-react/toolbar/Overflow.d.ts +1 -1
  135. package/lib/cjs/components-react/toolbar/Overflow.d.ts.map +1 -1
  136. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts +1 -1
  137. package/lib/cjs/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  138. package/lib/cjs/components-react/toolbar/PopupItem.d.ts +2 -2
  139. package/lib/cjs/components-react/toolbar/PopupItem.d.ts.map +1 -1
  140. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  141. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  142. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  143. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  144. package/lib/cjs/components-react/toolbar/Toolbar.d.ts +1 -1
  145. package/lib/cjs/components-react/toolbar/Toolbar.d.ts.map +1 -1
  146. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  147. package/lib/cjs/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  148. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  149. package/lib/cjs/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  150. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  151. package/lib/cjs/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  152. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  153. package/lib/cjs/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  154. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  155. package/lib/cjs/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  156. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  157. package/lib/cjs/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  158. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  159. package/lib/cjs/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  160. package/lib/cjs/components-react/tree/controlled/TreeHooks.js +22 -1
  161. package/lib/cjs/components-react/tree/controlled/TreeHooks.js.map +1 -1
  162. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +1 -0
  163. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  164. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  165. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  166. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  167. package/lib/cjs/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  168. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  169. package/lib/cjs/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  170. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  171. package/lib/cjs/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  172. package/lib/cjs/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  173. package/lib/cjs/components-react.d.ts +3 -0
  174. package/lib/cjs/components-react.d.ts.map +1 -1
  175. package/lib/cjs/components-react.js +3 -0
  176. package/lib/cjs/components-react.js.map +1 -1
  177. package/lib/esm/components-react/UiComponents.d.ts.map +1 -1
  178. package/lib/esm/components-react/UiComponents.js +1 -0
  179. package/lib/esm/components-react/UiComponents.js.map +1 -1
  180. package/lib/esm/components-react/common/DelayedSpinner.d.ts +2 -2
  181. package/lib/esm/components-react/common/DelayedSpinner.d.ts.map +1 -1
  182. package/lib/esm/components-react/common/HighlightedText.d.ts +2 -2
  183. package/lib/esm/components-react/common/HighlightedText.d.ts.map +1 -1
  184. package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
  185. package/lib/esm/components-react/common/ImageRenderer.js +1 -0
  186. package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
  187. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.d.ts.map +1 -1
  188. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js +1 -0
  189. package/lib/esm/components-react/common/UseContextWithMandatoryProvider.js.map +1 -1
  190. package/lib/esm/components-react/datepicker/DateField.d.ts +2 -2
  191. package/lib/esm/components-react/datepicker/DateField.d.ts.map +1 -1
  192. package/lib/esm/components-react/datepicker/DatePicker.d.ts +2 -2
  193. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  194. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts +1 -1
  195. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  196. package/lib/esm/components-react/datepicker/TimeField.d.ts +2 -2
  197. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  198. package/lib/esm/components-react/editors/BooleanEditor.d.ts +1 -1
  199. package/lib/esm/components-react/editors/EditorContainer.d.ts +1 -1
  200. package/lib/esm/components-react/editors/EnumButtonGroupEditor.d.ts +1 -1
  201. package/lib/esm/components-react/editors/EnumEditor.d.ts +1 -1
  202. package/lib/esm/components-react/editors/IconEditor.d.ts +1 -1
  203. package/lib/esm/components-react/editors/ImageCheckBoxEditor.d.ts +1 -1
  204. package/lib/esm/components-react/editors/PopupButton.d.ts +2 -2
  205. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  206. package/lib/esm/components-react/editors/ToggleEditor.d.ts +1 -1
  207. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts +2 -2
  208. package/lib/esm/components-react/favorite/FavoritePropertyList.d.ts.map +1 -1
  209. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts +7 -3
  210. package/lib/esm/components-react/filter-builder/FilterBuilder.d.ts.map +1 -1
  211. package/lib/esm/components-react/filter-builder/FilterBuilder.js +4 -8
  212. package/lib/esm/components-react/filter-builder/FilterBuilder.js.map +1 -1
  213. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts +0 -36
  214. package/lib/esm/components-react/filter-builder/FilterBuilderContext.d.ts.map +1 -1
  215. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js +0 -71
  216. package/lib/esm/components-react/filter-builder/FilterBuilderContext.js.map +1 -1
  217. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts +24 -0
  218. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -0
  219. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js +23 -0
  220. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -0
  221. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts +31 -0
  222. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.d.ts.map +1 -0
  223. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js +73 -0
  224. package/lib/esm/components-react/filter-builder/FilterBuilderRangeValue.js.map +1 -0
  225. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts +4 -3
  226. package/lib/esm/components-react/filter-builder/FilterBuilderRule.d.ts.map +1 -1
  227. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js +20 -16
  228. package/lib/esm/components-react/filter-builder/FilterBuilderRule.js.map +1 -1
  229. package/lib/esm/components-react/filter-builder/FilterBuilderRule.scss +38 -29
  230. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts +10 -6
  231. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.d.ts.map +1 -1
  232. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js +17 -42
  233. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.js.map +1 -1
  234. package/lib/esm/components-react/filter-builder/FilterBuilderRuleGroup.scss +25 -59
  235. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts +11 -6
  236. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.d.ts.map +1 -1
  237. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +41 -5
  238. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  239. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts +1 -1
  240. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  241. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +1 -1
  242. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  243. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts +4 -4
  244. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.d.ts.map +1 -1
  245. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +39 -1
  246. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  247. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts +10 -11
  248. package/lib/esm/components-react/filter-builder/FilterBuilderState.d.ts.map +1 -1
  249. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +149 -42
  250. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  251. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts +20 -0
  252. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -0
  253. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js +23 -0
  254. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -0
  255. package/lib/esm/components-react/filter-builder/Operators.d.ts +24 -19
  256. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  257. package/lib/esm/components-react/filter-builder/Operators.js +37 -61
  258. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  259. package/lib/esm/components-react/filter-builder/Types.d.ts +2 -2
  260. package/lib/esm/components-react/filter-builder/Types.d.ts.map +1 -1
  261. package/lib/esm/components-react/filter-builder/Types.js.map +1 -1
  262. package/lib/esm/components-react/filtering/FilteringInput.d.ts +1 -1
  263. package/lib/esm/components-react/filtering/ResultSelector.d.ts +1 -1
  264. package/lib/esm/components-react/iconpicker/IconPickerButton.d.ts +1 -1
  265. package/lib/esm/components-react/properties/LinkHandler.d.ts +1 -1
  266. package/lib/esm/components-react/properties/LinkHandler.d.ts.map +1 -1
  267. package/lib/esm/components-react/properties/renderers/ActionButtonList.d.ts +1 -1
  268. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.d.ts +1 -1
  269. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +1 -1
  270. package/lib/esm/components-react/properties/renderers/PropertyRenderer.d.ts +1 -1
  271. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts +1 -1
  272. package/lib/esm/components-react/properties/renderers/label/NonPrimitivePropertyLabelRenderer.d.ts +1 -1
  273. package/lib/esm/components-react/properties/renderers/label/PrimitivePropertyLabelRenderer.d.ts +1 -1
  274. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.d.ts +1 -1
  275. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts +2 -2
  276. package/lib/esm/components-react/properties/renderers/value/DoublePropertyValueRenderer.d.ts.map +1 -1
  277. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts +2 -2
  278. package/lib/esm/components-react/properties/renderers/value/NavigationPropertyValueRenderer.d.ts.map +1 -1
  279. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts +2 -2
  280. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.d.ts.map +1 -1
  281. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts +2 -2
  282. package/lib/esm/components-react/properties/renderers/value/UrlPropertyValueRenderer.d.ts.map +1 -1
  283. package/lib/esm/components-react/properties/renderers/value/table/ArrayValueRenderer.d.ts +1 -1
  284. package/lib/esm/components-react/properties/renderers/value/table/NonPrimitiveValueRenderer.d.ts +1 -1
  285. package/lib/esm/components-react/properties/renderers/value/table/StructValueRenderer.d.ts +1 -1
  286. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts +1 -1
  287. package/lib/esm/components-react/propertygrid/component/FlatItemNestedBorderWrapper.d.ts.map +1 -1
  288. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.d.ts +1 -1
  289. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts +1 -1
  290. package/lib/esm/components-react/propertygrid/component/PropertyList.d.ts +1 -1
  291. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -1
  292. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts +5 -2
  293. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.d.ts.map +1 -1
  294. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js +21 -9
  295. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGridWithDataProvider.js.map +1 -1
  296. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts +12 -0
  297. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.d.ts.map +1 -1
  298. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js +20 -0
  299. package/lib/esm/components-react/propertygrid/internal/PropertyGridHooks.js.map +1 -1
  300. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.d.ts +1 -1
  301. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts +2 -2
  302. package/lib/esm/components-react/selectable-content/SelectableContent.d.ts.map +1 -1
  303. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts +2 -2
  304. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  305. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts +1 -1
  306. package/lib/esm/components-react/toolbar/ItemWrapper.d.ts.map +1 -1
  307. package/lib/esm/components-react/toolbar/Items.d.ts +1 -1
  308. package/lib/esm/components-react/toolbar/Items.d.ts.map +1 -1
  309. package/lib/esm/components-react/toolbar/Overflow.d.ts +1 -1
  310. package/lib/esm/components-react/toolbar/Overflow.d.ts.map +1 -1
  311. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts +1 -1
  312. package/lib/esm/components-react/toolbar/OverflowPanel.d.ts.map +1 -1
  313. package/lib/esm/components-react/toolbar/PopupItem.d.ts +2 -2
  314. package/lib/esm/components-react/toolbar/PopupItem.d.ts.map +1 -1
  315. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts +2 -2
  316. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  317. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts +2 -2
  318. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  319. package/lib/esm/components-react/toolbar/Toolbar.d.ts +1 -1
  320. package/lib/esm/components-react/toolbar/Toolbar.d.ts.map +1 -1
  321. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
  322. package/lib/esm/components-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
  323. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts +1 -1
  324. package/lib/esm/components-react/toolbar/groupPanel/Column.d.ts.map +1 -1
  325. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts +1 -1
  326. package/lib/esm/components-react/toolbar/groupPanel/Columns.d.ts.map +1 -1
  327. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts +1 -1
  328. package/lib/esm/components-react/toolbar/groupPanel/Panel.d.ts.map +1 -1
  329. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts +1 -1
  330. package/lib/esm/components-react/toolbar/groupPanel/Title.d.ts.map +1 -1
  331. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts +1 -1
  332. package/lib/esm/components-react/toolbar/groupPanel/tool/Tool.d.ts.map +1 -1
  333. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts +12 -0
  334. package/lib/esm/components-react/tree/controlled/TreeHooks.d.ts.map +1 -1
  335. package/lib/esm/components-react/tree/controlled/TreeHooks.js +21 -1
  336. package/lib/esm/components-react/tree/controlled/TreeHooks.js.map +1 -1
  337. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +1 -0
  338. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  339. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts +1 -1
  340. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  341. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts +2 -2
  342. package/lib/esm/components-react/tree/controlled/component/NodeContent.d.ts.map +1 -1
  343. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts +1 -1
  344. package/lib/esm/components-react/tree/controlled/component/TreeNodeEditor.d.ts.map +1 -1
  345. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts +1 -1
  346. package/lib/esm/components-react/tree/controlled/component/TreeNodeRenderer.d.ts.map +1 -1
  347. package/lib/esm/components-react/tree/controlled/component/TreeRenderer.d.ts +1 -1
  348. package/lib/esm/components-react.d.ts +3 -0
  349. package/lib/esm/components-react.d.ts.map +1 -1
  350. package/lib/esm/components-react.js +3 -0
  351. package/lib/esm/components-react.js.map +1 -1
  352. package/lib/public/locales/en/UiComponents.json +12 -7
  353. package/package.json +8 -8
@@ -30,7 +30,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
30
30
  return result;
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.useActiveRuleGroupContextProps = exports.ActiveRuleGroupContext = exports.PropertyFilterBuilderRuleRenderingContext = exports.PropertyFilterBuilderContext = void 0;
33
+ exports.PropertyFilterBuilderRuleRenderingContext = exports.PropertyFilterBuilderContext = void 0;
34
34
  const React = __importStar(require("react"));
35
35
  /**
36
36
  * Context used to store data for rules and rule groups rendered inside [[PropertyFilterBuilder]] component.
@@ -42,76 +42,4 @@ exports.PropertyFilterBuilderContext = React.createContext(null);
42
42
  * @internal
43
43
  */
44
44
  exports.PropertyFilterBuilderRuleRenderingContext = React.createContext({});
45
- /**
46
- * Context for tracking and storing active rule group in [[PropertyFilterBuilder]].
47
- * Group is considered active if it is focused or hovered.
48
- * @internal
49
- */
50
- exports.ActiveRuleGroupContext = React.createContext(null);
51
- /**
52
- * Custom hook that created value for [[ActiveRuleGroupContext]].
53
- * @internal
54
- */
55
- function useActiveRuleGroupContextProps(rootElementRef) {
56
- const [focusedElement, setFocusedElement] = React.useState();
57
- const [hoveredElement, setHoveredElement] = React.useState();
58
- // This is used to prevent handling onFocus, onBlur, onMouseOver, onMouseOut in the same event cycle.
59
- const focusedTimeout = useSetTimeout();
60
- const hoveredTimeout = useSetTimeout();
61
- const onFocus = (e) => {
62
- e.stopPropagation();
63
- const target = e.currentTarget;
64
- focusedTimeout(() => {
65
- setFocusedElement(target);
66
- });
67
- };
68
- const onBlur = (e) => {
69
- e.stopPropagation();
70
- if (focusedElement !== e.currentTarget ||
71
- (rootElementRef.current &&
72
- rootElementRef.current.contains(e.relatedTarget)))
73
- return;
74
- focusedTimeout(() => {
75
- setFocusedElement(undefined);
76
- });
77
- };
78
- const onMouseOver = (e) => {
79
- const target = e.currentTarget;
80
- e.stopPropagation();
81
- hoveredTimeout(() => {
82
- setHoveredElement(target);
83
- });
84
- };
85
- const onMouseOut = (e) => {
86
- e.stopPropagation();
87
- // istanbul ignore if
88
- if (hoveredElement !== e.currentTarget)
89
- return;
90
- hoveredTimeout(() => {
91
- setHoveredElement(undefined);
92
- });
93
- };
94
- return {
95
- focusedElement,
96
- hoveredElement,
97
- onFocus,
98
- onBlur,
99
- onMouseOver,
100
- onMouseOut,
101
- };
102
- }
103
- exports.useActiveRuleGroupContextProps = useActiveRuleGroupContextProps;
104
- function useSetTimeout() {
105
- const timeoutRef = React.useRef();
106
- React.useEffect(() => {
107
- // clear pending timeout on unmount
108
- return () => {
109
- window.clearTimeout(timeoutRef.current);
110
- };
111
- }, []);
112
- return (callback) => {
113
- window.clearTimeout(timeoutRef.current);
114
- timeoutRef.current = window.setTimeout(callback);
115
- };
116
- }
117
45
  //# sourceMappingURL=FilterBuilderContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderContext.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderContext.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAqB/B;;;GAGG;AACU,QAAA,4BAA4B,GACvC,KAAK,CAAC,aAAa,CAAoC,IAAK,CAAC,CAAC;AAqBhE;;;GAGG;AACU,QAAA,yCAAyC,GACpD,KAAK,CAAC,aAAa,CAAiD,EAAE,CAAC,CAAC;AAqB1E;;;;GAIG;AACU,QAAA,sBAAsB,GACjC,KAAK,CAAC,aAAa,CAA8B,IAAK,CAAC,CAAC;AAE1D;;;GAGG;AACH,SAAgB,8BAA8B,CAC5C,cAA4C;IAE5C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAEvD,CAAC;IACJ,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,EAEvD,CAAC;IAEJ,qGAAqG;IACrG,MAAM,cAAc,GAAG,aAAa,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,aAAa,EAAE,CAAC;IAEvC,MAAM,OAAO,GAAyC,CAAC,CAAC,EAAE,EAAE;QAC1D,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,cAAc,CAAC,GAAG,EAAE;YAClB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,MAAM,GAAyC,CAAC,CAAC,EAAE,EAAE;QACzD,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IACE,cAAc,KAAK,CAAC,CAAC,aAAa;YAClC,CAAC,cAAc,CAAC,OAAO;gBACrB,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YAEnD,OAAO;QAET,cAAc,CAAC,GAAG,EAAE;YAClB,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,WAAW,GAAyC,CAAC,CAAC,EAAE,EAAE;QAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,cAAc,CAAC,GAAG,EAAE;YAClB,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,UAAU,GAAyC,CAAC,CAAC,EAAE,EAAE;QAC7D,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,qBAAqB;QACrB,IAAI,cAAc,KAAK,CAAC,CAAC,aAAa;YAAE,OAAO;QAE/C,cAAc,CAAC,GAAG,EAAE;YAClB,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,OAAO;QACL,cAAc;QACd,cAAc;QACd,OAAO;QACP,MAAM;QACN,WAAW;QACX,UAAU;KACX,CAAC;AACJ,CAAC;AA9DD,wEA8DC;AAED,SAAS,aAAa;IACpB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAU,CAAC;IAE1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,mCAAmC;QACnC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,QAAoB,EAAE,EAAE;QAC9B,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC,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 { PropertyFilterBuilderActions } from \"./FilterBuilderState\";\nimport type { PropertyFilterBuilderRuleOperatorProps } from \"./FilterBuilderRuleOperator\";\nimport type { PropertyFilterBuilderRuleValueRendererProps } from \"./FilterBuilderRuleValue\";\n\n/**\n * Data structure that describes [[PropertyFilterBuilderContext]] value.\n * @internal\n */\nexport interface PropertyFilterBuilderContextProps {\n /** Actions for modifying [[PropertyFilterBuilder]] state. */\n actions: PropertyFilterBuilderActions;\n /** List of available properties. */\n properties: PropertyDescription[];\n /** Callback to invoke when property is selected in any rule. */\n onRulePropertySelected?: (property: PropertyDescription) => void;\n /** Specifies how deep rule groups can be nested. */\n ruleGroupDepthLimit?: number;\n}\n\n/**\n * Context used to store data for rules and rule groups rendered inside [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport const PropertyFilterBuilderContext =\n React.createContext<PropertyFilterBuilderContextProps>(null!);\n\n/**\n * Data structure that describes [[PropertyFilterBuilderRuleRenderingContext]] value.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleRenderingContextProps {\n /** Custom renderer for operator selector in rule. */\n ruleOperatorRenderer?: (\n props: PropertyFilterBuilderRuleOperatorProps\n ) => React.ReactNode;\n /** Custom renderer for value input in rule. */\n ruleValueRenderer?: (\n props: PropertyFilterBuilderRuleValueRendererProps\n ) => React.ReactNode;\n /** Custom renderer for property selector in rule. */\n propertyRenderer?: (name: string) => React.ReactNode;\n /** Specifies that properties selection is disabled. */\n isDisabled?: boolean;\n}\n\n/**\n * Context for rendering rules and rule groups inside [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport const PropertyFilterBuilderRuleRenderingContext =\n React.createContext<PropertyFilterBuilderRuleRenderingContextProps>({});\n\n/**\n * Data structure that describes value of [[ActiveRuleGroupContext]].\n * @internal\n */\nexport interface ActiveRuleGroupContextProps {\n /** Element of currently focused rule group. */\n focusedElement: HTMLElement | undefined;\n /** Element of currently hovered rule group. */\n hoveredElement: HTMLElement | undefined;\n /** Even handler for rule group element 'onFocus' event */\n onFocus: React.FocusEventHandler<HTMLElement>;\n /** Even handler for rule group element 'onBlur' event */\n onBlur: React.FocusEventHandler<HTMLElement>;\n /** Even handler for rule group element 'onMouseOver' event */\n onMouseOver: React.MouseEventHandler<HTMLElement>;\n /** Even handler for rule group element 'onMouseOut' event */\n onMouseOut: React.MouseEventHandler<HTMLElement>;\n}\n\n/**\n * Context for tracking and storing active rule group in [[PropertyFilterBuilder]].\n * Group is considered active if it is focused or hovered.\n * @internal\n */\nexport const ActiveRuleGroupContext =\n React.createContext<ActiveRuleGroupContextProps>(null!);\n\n/**\n * Custom hook that created value for [[ActiveRuleGroupContext]].\n * @internal\n */\nexport function useActiveRuleGroupContextProps(\n rootElementRef: React.RefObject<HTMLElement>\n) {\n const [focusedElement, setFocusedElement] = React.useState<\n HTMLElement | undefined\n >();\n const [hoveredElement, setHoveredElement] = React.useState<\n HTMLElement | undefined\n >();\n\n // This is used to prevent handling onFocus, onBlur, onMouseOver, onMouseOut in the same event cycle.\n const focusedTimeout = useSetTimeout();\n const hoveredTimeout = useSetTimeout();\n\n const onFocus: React.FocusEventHandler<HTMLElement> = (e) => {\n e.stopPropagation();\n const target = e.currentTarget;\n focusedTimeout(() => {\n setFocusedElement(target);\n });\n };\n\n const onBlur: React.FocusEventHandler<HTMLElement> = (e) => {\n e.stopPropagation();\n if (\n focusedElement !== e.currentTarget ||\n (rootElementRef.current &&\n rootElementRef.current.contains(e.relatedTarget))\n )\n return;\n\n focusedTimeout(() => {\n setFocusedElement(undefined);\n });\n };\n\n const onMouseOver: React.MouseEventHandler<HTMLElement> = (e) => {\n const target = e.currentTarget;\n e.stopPropagation();\n hoveredTimeout(() => {\n setHoveredElement(target);\n });\n };\n\n const onMouseOut: React.MouseEventHandler<HTMLElement> = (e) => {\n e.stopPropagation();\n // istanbul ignore if\n if (hoveredElement !== e.currentTarget) return;\n\n hoveredTimeout(() => {\n setHoveredElement(undefined);\n });\n };\n\n return {\n focusedElement,\n hoveredElement,\n onFocus,\n onBlur,\n onMouseOver,\n onMouseOut,\n };\n}\n\nfunction useSetTimeout() {\n const timeoutRef = React.useRef<number>();\n\n React.useEffect(() => {\n // clear pending timeout on unmount\n return () => {\n window.clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return (callback: () => void) => {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = window.setTimeout(callback);\n };\n}\n"]}
1
+ {"version":3,"file":"FilterBuilderContext.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderContext.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAqB/B;;;GAGG;AACU,QAAA,4BAA4B,GACvC,KAAK,CAAC,aAAa,CAAoC,IAAK,CAAC,CAAC;AAqBhE;;;GAGG;AACU,QAAA,yCAAyC,GACpD,KAAK,CAAC,aAAa,CAAiD,EAAE,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 * as React from \"react\";\nimport type { PropertyDescription } from \"@itwin/appui-abstract\";\nimport type { PropertyFilterBuilderActions } from \"./FilterBuilderState\";\nimport type { PropertyFilterBuilderRuleOperatorProps } from \"./FilterBuilderRuleOperator\";\nimport type { PropertyFilterBuilderRuleValueRendererProps } from \"./FilterBuilderRuleValue\";\n\n/**\n * Data structure that describes [[PropertyFilterBuilderContext]] value.\n * @internal\n */\nexport interface PropertyFilterBuilderContextProps {\n /** Actions for modifying [[PropertyFilterBuilder]] state. */\n actions: PropertyFilterBuilderActions;\n /** List of available properties. */\n properties: PropertyDescription[];\n /** Callback to invoke when property is selected in any rule. */\n onRulePropertySelected?: (property: PropertyDescription) => void;\n /** Specifies how deep rule groups can be nested. */\n ruleGroupDepthLimit?: number;\n}\n\n/**\n * Context used to store data for rules and rule groups rendered inside [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport const PropertyFilterBuilderContext =\n React.createContext<PropertyFilterBuilderContextProps>(null!);\n\n/**\n * Data structure that describes [[PropertyFilterBuilderRuleRenderingContext]] value.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleRenderingContextProps {\n /** Custom renderer for operator selector in rule. */\n ruleOperatorRenderer?: (\n props: PropertyFilterBuilderRuleOperatorProps\n ) => React.ReactNode;\n /** Custom renderer for value input in rule. */\n ruleValueRenderer?: (\n props: PropertyFilterBuilderRuleValueRendererProps\n ) => React.ReactNode;\n /** Custom renderer for property selector in rule. */\n propertyRenderer?: (name: string) => React.ReactNode;\n /** Specifies that properties selection is disabled. */\n isDisabled?: boolean;\n}\n\n/**\n * Context for rendering rules and rule groups inside [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport const PropertyFilterBuilderRuleRenderingContext =\n React.createContext<PropertyFilterBuilderRuleRenderingContextProps>({});\n"]}
@@ -0,0 +1,24 @@
1
+ /** @packageDocumentation
2
+ * @module PropertyFilterBuilder
3
+ */
4
+ import React from "react";
5
+ import type { PropertyFilterRuleGroupOperator } from "./Operators";
6
+ /**
7
+ * Props for [[PropertyFilterBuilderLogicalOperator]] component.
8
+ * @beta
9
+ */
10
+ export interface PropertyFilterBuilderLogicalOperatorProps {
11
+ /** Allows toggling of operator by clicking operator text. */
12
+ isDisabled?: boolean;
13
+ /** Operator to combine FilterBuilderRules. Must be either "and" or "or". */
14
+ operator: `${PropertyFilterRuleGroupOperator}`;
15
+ /** Callback that is invoked when operator changes. */
16
+ onOperatorChange: (operator: `${PropertyFilterRuleGroupOperator}`) => void;
17
+ /** Classname to specify CSS styling */
18
+ className?: string;
19
+ }
20
+ /** Component to render the operator inside of the filter builder
21
+ * @beta
22
+ */
23
+ export declare const PropertyFilterBuilderLogicalOperator: (props: PropertyFilterBuilderLogicalOperatorProps) => React.JSX.Element;
24
+ //# sourceMappingURL=FilterBuilderLogicalOperator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderLogicalOperator.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderLogicalOperator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAEnE;;;GAGG;AACH,MAAM,WAAW,yCAAyC;IACxD,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4EAA4E;IAC5E,QAAQ,EAAE,GAAG,+BAA+B,EAAE,CAAC;IAC/C,sDAAsD;IACtD,gBAAgB,EAAE,CAAC,QAAQ,EAAE,GAAG,+BAA+B,EAAE,KAAK,IAAI,CAAC;IAC3E,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,eAAO,MAAM,oCAAoC,UACxC,yCAAyC,sBAyBjD,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PropertyFilterBuilderLogicalOperator = void 0;
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ /** @packageDocumentation
12
+ * @module PropertyFilterBuilder
13
+ */
14
+ const react_1 = __importDefault(require("react"));
15
+ const classnames_1 = __importDefault(require("classnames"));
16
+ const itwinui_react_1 = require("@itwin/itwinui-react");
17
+ const UiComponents_1 = require("../UiComponents");
18
+ /** Component to render the operator inside of the filter builder
19
+ * @beta
20
+ */
21
+ const PropertyFilterBuilderLogicalOperator = (props) => {
22
+ const { isDisabled, operator, onOperatorChange, className } = props;
23
+ const toggle = () => (operator === "and" ? "or" : "and");
24
+ const operatorDisplayText = operator === "and"
25
+ ? UiComponents_1.UiComponents.translate("filterBuilder.operators.and")
26
+ : UiComponents_1.UiComponents.translate("filterBuilder.operators.or");
27
+ return (react_1.default.createElement("div", { className: (0, classnames_1.default)("fb-logical-operator", className) }, isDisabled ? (react_1.default.createElement("span", null, operatorDisplayText)) : (react_1.default.createElement(itwinui_react_1.Anchor, { className: "fb-logical-operator-toggle", onClick: () => onOperatorChange(toggle()) }, operatorDisplayText))));
28
+ };
29
+ exports.PropertyFilterBuilderLogicalOperator = PropertyFilterBuilderLogicalOperator;
30
+ //# sourceMappingURL=FilterBuilderLogicalOperator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderLogicalOperator.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderLogicalOperator.tsx"],"names":[],"mappings":";;;;;;AAAA;;;gGAGgG;AAChG;;GAEG;AACH,kDAA0B;AAC1B,4DAA4B;AAC5B,wDAA8C;AAC9C,kDAA+C;AAkB/C;;GAEG;AACI,MAAM,oCAAoC,GAAG,CAClD,KAAgD,EAChD,EAAE;IACF,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEpE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEzD,MAAM,mBAAmB,GACvB,QAAQ,KAAK,KAAK;QAChB,CAAC,CAAC,2BAAY,CAAC,SAAS,CAAC,6BAA6B,CAAC;QACvD,CAAC,CAAC,2BAAY,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAE3D,OAAO,CACL,uCAAK,SAAS,EAAE,IAAA,oBAAE,EAAC,qBAAqB,EAAE,SAAS,CAAC,IACjD,UAAU,CAAC,CAAC,CAAC,CACZ,4CAAO,mBAAmB,CAAQ,CACnC,CAAC,CAAC,CAAC,CACF,8BAAC,sBAAM,IACL,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAExC,mBAAmB,CACb,CACV,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AA1BW,QAAA,oCAAoC,wCA0B/C","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 */\nimport React from \"react\";\nimport cx from \"classnames\";\nimport { Anchor } from \"@itwin/itwinui-react\";\nimport { UiComponents } from \"../UiComponents\";\nimport type { PropertyFilterRuleGroupOperator } from \"./Operators\";\n\n/**\n * Props for [[PropertyFilterBuilderLogicalOperator]] component.\n * @beta\n */\nexport interface PropertyFilterBuilderLogicalOperatorProps {\n /** Allows toggling of operator by clicking operator text. */\n isDisabled?: boolean;\n /** Operator to combine FilterBuilderRules. Must be either \"and\" or \"or\". */\n operator: `${PropertyFilterRuleGroupOperator}`;\n /** Callback that is invoked when operator changes. */\n onOperatorChange: (operator: `${PropertyFilterRuleGroupOperator}`) => void;\n /** Classname to specify CSS styling */\n className?: string;\n}\n\n/** Component to render the operator inside of the filter builder\n * @beta\n */\nexport const PropertyFilterBuilderLogicalOperator = (\n props: PropertyFilterBuilderLogicalOperatorProps\n) => {\n const { isDisabled, operator, onOperatorChange, className } = props;\n\n const toggle = () => (operator === \"and\" ? \"or\" : \"and\");\n\n const operatorDisplayText =\n operator === \"and\"\n ? UiComponents.translate(\"filterBuilder.operators.and\")\n : UiComponents.translate(\"filterBuilder.operators.or\");\n\n return (\n <div className={cx(\"fb-logical-operator\", className)}>\n {isDisabled ? (\n <span>{operatorDisplayText}</span>\n ) : (\n <Anchor\n className=\"fb-logical-operator-toggle\"\n onClick={() => onOperatorChange(toggle())}\n >\n {operatorDisplayText}\n </Anchor>\n )}\n </div>\n );\n};\n"]}
@@ -0,0 +1,31 @@
1
+ /** @packageDocumentation
2
+ * @module PropertyFilterBuilder
3
+ */
4
+ import type { PrimitiveValue, PropertyValue } from "@itwin/appui-abstract";
5
+ /**
6
+ * Data structure that describes range value.
7
+ * @beta
8
+ */
9
+ export interface PropertyFilterBuilderRuleRangeValue {
10
+ from: PrimitiveValue;
11
+ to: PrimitiveValue;
12
+ }
13
+ /** @beta */
14
+ export declare namespace PropertyFilterBuilderRuleRangeValue {
15
+ /**
16
+ * Parses [[PropertyFilterBuilderRuleRangeValue]] from [[PropertyValue]].
17
+ * @beta
18
+ */
19
+ function parse(val?: PropertyValue): PropertyFilterBuilderRuleRangeValue;
20
+ /**
21
+ * Serializes [[PropertyFilterBuilderRuleRangeValue]] into [[PrimitiveValue]].
22
+ * @beta
23
+ */
24
+ function serialize(val: PropertyFilterBuilderRuleRangeValue): PrimitiveValue;
25
+ /**
26
+ * Checks if [[PropertyFilterBuilderRuleRangeValue]] has valid range.
27
+ * @beta
28
+ */
29
+ function isRangeValid({ from, to, }: PropertyFilterBuilderRuleRangeValue): boolean;
30
+ }
31
+ //# sourceMappingURL=FilterBuilderRangeValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderRangeValue.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRangeValue.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAG3E;;;GAGG;AACH,MAAM,WAAW,mCAAmC;IAClD,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,cAAc,CAAC;CACpB;AAED,YAAY;AACZ,yBAAiB,mCAAmC,CAAC;IACnD;;;OAGG;IACH,SAAgB,KAAK,CACnB,GAAG,CAAC,EAAE,aAAa,GAClB,mCAAmC,CAErC;IAED;;;OAGG;IACH,SAAgB,SAAS,CACvB,GAAG,EAAE,mCAAmC,GACvC,cAAc,CAKhB;IAED;;;OAGG;IACH,SAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,EAAE,GACH,EAAE,mCAAmC,WAUrC;CACF"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module PropertyFilterBuilder
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.PropertyFilterBuilderRuleRangeValue = void 0;
11
+ const appui_abstract_1 = require("@itwin/appui-abstract");
12
+ /** @beta */
13
+ var PropertyFilterBuilderRuleRangeValue;
14
+ (function (PropertyFilterBuilderRuleRangeValue) {
15
+ /**
16
+ * Parses [[PropertyFilterBuilderRuleRangeValue]] from [[PropertyValue]].
17
+ * @beta
18
+ */
19
+ function parse(val) {
20
+ return parseRangeValue(val);
21
+ }
22
+ PropertyFilterBuilderRuleRangeValue.parse = parse;
23
+ /**
24
+ * Serializes [[PropertyFilterBuilderRuleRangeValue]] into [[PrimitiveValue]].
25
+ * @beta
26
+ */
27
+ function serialize(val) {
28
+ return {
29
+ valueFormat: appui_abstract_1.PropertyValueFormat.Primitive,
30
+ value: JSON.stringify(val),
31
+ };
32
+ }
33
+ PropertyFilterBuilderRuleRangeValue.serialize = serialize;
34
+ /**
35
+ * Checks if [[PropertyFilterBuilderRuleRangeValue]] has valid range.
36
+ * @beta
37
+ */
38
+ function isRangeValid({ from, to, }) {
39
+ if (isNumericValue(from) && isNumericValue(to)) {
40
+ return from.value < to.value;
41
+ }
42
+ if (isDateValue(from) && isDateValue(to)) {
43
+ return new Date(from.value) < new Date(to.value);
44
+ }
45
+ return false;
46
+ }
47
+ PropertyFilterBuilderRuleRangeValue.isRangeValid = isRangeValid;
48
+ })(PropertyFilterBuilderRuleRangeValue = exports.PropertyFilterBuilderRuleRangeValue || (exports.PropertyFilterBuilderRuleRangeValue = {}));
49
+ function isNumericValue(value) {
50
+ return typeof value.value === "number";
51
+ }
52
+ function isDateValue(value) {
53
+ return typeof value.value === "string" || value.value instanceof Date;
54
+ }
55
+ function parseRangeValue(val) {
56
+ if (!val ||
57
+ val.valueFormat !== appui_abstract_1.PropertyValueFormat.Primitive ||
58
+ typeof val.value !== "string") {
59
+ return {
60
+ from: { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
61
+ to: { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
62
+ };
63
+ }
64
+ try {
65
+ const value = JSON.parse(val.value);
66
+ if (value.from !== undefined && value.to !== undefined) {
67
+ return value;
68
+ }
69
+ }
70
+ catch { }
71
+ return {
72
+ from: { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
73
+ to: { valueFormat: appui_abstract_1.PropertyValueFormat.Primitive },
74
+ };
75
+ }
76
+ //# sourceMappingURL=FilterBuilderRangeValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterBuilderRangeValue.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRangeValue.ts"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAGH,0DAA4D;AAW5D,YAAY;AACZ,IAAiB,mCAAmC,CA0CnD;AA1CD,WAAiB,mCAAmC;IAClD;;;OAGG;IACH,SAAgB,KAAK,CACnB,GAAmB;QAEnB,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAJe,yCAAK,QAIpB,CAAA;IAED;;;OAGG;IACH,SAAgB,SAAS,CACvB,GAAwC;QAExC,OAAO;YACL,WAAW,EAAE,oCAAmB,CAAC,SAAS;YAC1C,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAPe,6CAAS,YAOxB,CAAA;IAED;;;OAGG;IACH,SAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,EAAE,GACkC;QACpC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC;SAC9B;QAED,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE;YACxC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;SAClD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAbe,gDAAY,eAa3B,CAAA;AACH,CAAC,EA1CgB,mCAAmC,GAAnC,2CAAmC,KAAnC,2CAAmC,QA0CnD;AAED,SAAS,cAAc,CACrB,KAAqB;IAErB,OAAO,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC;AACzC,CAAC;AAED,SAAS,WAAW,CAClB,KAAqB;IAErB,OAAO,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,YAAY,IAAI,CAAC;AACxE,CAAC;AAED,SAAS,eAAe,CACtB,GAAmB;IAEnB,IACE,CAAC,GAAG;QACJ,GAAG,CAAC,WAAW,KAAK,oCAAmB,CAAC,SAAS;QACjD,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,EAC7B;QACA,OAAO;YACL,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE;YACpD,EAAE,EAAE,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE;SACnD,CAAC;KACH;IAED,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE;YACtD,OAAO,KAA4C,CAAC;SACrD;KACF;IAAC,MAAM,GAAE;IAEV,OAAO;QACL,IAAI,EAAE,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE;QACpD,EAAE,EAAE,EAAE,WAAW,EAAE,oCAAmB,CAAC,SAAS,EAAE;KACnD,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 type { PrimitiveValue, PropertyValue } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\n\n/**\n * Data structure that describes range value.\n * @beta\n */\nexport interface PropertyFilterBuilderRuleRangeValue {\n from: PrimitiveValue;\n to: PrimitiveValue;\n}\n\n/** @beta */\nexport namespace PropertyFilterBuilderRuleRangeValue {\n /**\n * Parses [[PropertyFilterBuilderRuleRangeValue]] from [[PropertyValue]].\n * @beta\n */\n export function parse(\n val?: PropertyValue\n ): PropertyFilterBuilderRuleRangeValue {\n return parseRangeValue(val);\n }\n\n /**\n * Serializes [[PropertyFilterBuilderRuleRangeValue]] into [[PrimitiveValue]].\n * @beta\n */\n export function serialize(\n val: PropertyFilterBuilderRuleRangeValue\n ): PrimitiveValue {\n return {\n valueFormat: PropertyValueFormat.Primitive,\n value: JSON.stringify(val),\n };\n }\n\n /**\n * Checks if [[PropertyFilterBuilderRuleRangeValue]] has valid range.\n * @beta\n */\n export function isRangeValid({\n from,\n to,\n }: PropertyFilterBuilderRuleRangeValue) {\n if (isNumericValue(from) && isNumericValue(to)) {\n return from.value < to.value;\n }\n\n if (isDateValue(from) && isDateValue(to)) {\n return new Date(from.value) < new Date(to.value);\n }\n\n return false;\n }\n}\n\nfunction isNumericValue(\n value: PrimitiveValue\n): value is PrimitiveValue & { value: number } {\n return typeof value.value === \"number\";\n}\n\nfunction isDateValue(\n value: PrimitiveValue\n): value is PrimitiveValue & { value: string | Date } {\n return typeof value.value === \"string\" || value.value instanceof Date;\n}\n\nfunction parseRangeValue(\n val?: PropertyValue\n): PropertyFilterBuilderRuleRangeValue {\n if (\n !val ||\n val.valueFormat !== PropertyValueFormat.Primitive ||\n typeof val.value !== \"string\"\n ) {\n return {\n from: { valueFormat: PropertyValueFormat.Primitive },\n to: { valueFormat: PropertyValueFormat.Primitive },\n };\n }\n\n try {\n const value = JSON.parse(val.value);\n if (value.from !== undefined && value.to !== undefined) {\n return value as PropertyFilterBuilderRuleRangeValue;\n }\n } catch {}\n\n return {\n from: { valueFormat: PropertyValueFormat.Primitive },\n to: { valueFormat: PropertyValueFormat.Primitive },\n };\n}\n"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module PropertyFilterBuilder
3
3
  */
4
- /// <reference types="react" />
5
4
  import "./FilterBuilderRule.scss";
5
+ import * as React from "react";
6
6
  import type { PropertyFilterBuilderRule } from "./FilterBuilderState";
7
7
  /**
8
8
  * Props for [[PropertyFilterBuilderRuleRenderer]] component.
@@ -13,11 +13,12 @@ export interface PropertyFilterBuilderRuleRendererProps {
13
13
  path: string[];
14
14
  /** Rule to render. */
15
15
  rule: PropertyFilterBuilderRule;
16
- isRemovable?: boolean;
16
+ /** Function to add rule to group */
17
+ onRuleAdded: () => void;
17
18
  }
18
19
  /**
19
20
  * Component that renders single rule in [[PropertyFilterBuilder]] component.
20
21
  * @internal
21
22
  */
22
- export declare function PropertyFilterBuilderRuleRenderer(props: PropertyFilterBuilderRuleRendererProps): JSX.Element;
23
+ export declare function PropertyFilterBuilderRuleRenderer(props: PropertyFilterBuilderRuleRendererProps): React.JSX.Element;
23
24
  //# sourceMappingURL=FilterBuilderRule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRule.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRule.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,0BAA0B,CAAC;AAYlC,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAItE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,6DAA6D;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,yBAAyB,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,eAwH9C"}
1
+ {"version":3,"file":"FilterBuilderRule.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRule.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAOtE;;;GAGG;AACH,MAAM,WAAW,sCAAsC;IACrD,6DAA6D;IAC7D,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,sBAAsB;IACtB,IAAI,EAAE,yBAAyB,CAAC;IAChC,oCAAoC;IACpC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,sCAAsC,qBAoH9C"}
@@ -40,12 +40,13 @@ const FilterBuilderRuleOperator_1 = require("./FilterBuilderRuleOperator");
40
40
  const FilterBuilderRuleProperty_1 = require("./FilterBuilderRuleProperty");
41
41
  const FilterBuilderRuleValue_1 = require("./FilterBuilderRuleValue");
42
42
  const Operators_1 = require("./Operators");
43
+ const FilterBuilderToolbar_1 = require("./FilterBuilderToolbar");
43
44
  /**
44
45
  * Component that renders single rule in [[PropertyFilterBuilder]] component.
45
46
  * @internal
46
47
  */
47
48
  function PropertyFilterBuilderRuleRenderer(props) {
48
- const { path, rule, isRemovable } = props;
49
+ const { path, rule, onRuleAdded } = props;
49
50
  const { properties, actions, onRulePropertySelected } = React.useContext(FilterBuilderContext_1.PropertyFilterBuilderContext);
50
51
  const { ruleOperatorRenderer, ruleValueRenderer, propertyRenderer, isDisabled, } = React.useContext(FilterBuilderContext_1.PropertyFilterBuilderRuleRenderingContext);
51
52
  const { property, operator, value } = rule;
@@ -63,6 +64,10 @@ function PropertyFilterBuilderRuleRenderer(props) {
63
64
  actions.setRuleValue(path, newValue);
64
65
  }, [path, actions]);
65
66
  const removeRule = () => actions.removeItem(path);
67
+ const handleRuleAdded = () => {
68
+ actions.addItem([], "RULE");
69
+ onRuleAdded();
70
+ };
66
71
  const operatorRenderer = React.useCallback((prop) => {
67
72
  if (ruleOperatorRenderer)
68
73
  return ruleOperatorRenderer({
@@ -70,7 +75,7 @@ function PropertyFilterBuilderRuleRenderer(props) {
70
75
  operator,
71
76
  onChange: onRuleOperatorChange,
72
77
  });
73
- return (React.createElement(FilterBuilderRuleOperator_1.PropertyFilterBuilderRuleOperator, { property: prop, onChange: onRuleOperatorChange, operator: operator }));
78
+ return (React.createElement(FilterBuilderRuleOperator_1.PropertyFilterBuilderRuleOperatorRenderer, { property: prop, onChange: onRuleOperatorChange, operator: operator }));
74
79
  }, [operator, ruleOperatorRenderer, onRuleOperatorChange]);
75
80
  const valueRenderer = React.useCallback((prop, op) => {
76
81
  if (ruleValueRenderer)
@@ -80,21 +85,20 @@ function PropertyFilterBuilderRuleRenderer(props) {
80
85
  onChange: onRuleValueChange,
81
86
  operator: op,
82
87
  });
83
- return (React.createElement(FilterBuilderRuleValue_1.PropertyFilterBuilderRuleValue, { property: prop, onChange: onRuleValueChange, value: value }));
88
+ return (React.createElement(FilterBuilderRuleValue_1.PropertyFilterBuilderRuleValue, { property: prop, onChange: onRuleValueChange, value: value, operator: op }));
84
89
  }, [value, ruleValueRenderer, onRuleValueChange]);
85
- return (React.createElement("div", { className: "rule" },
86
- React.createElement("div", { className: "rule-remove-action" }, property || isRemovable ? (React.createElement(itwinui_react_1.IconButton, { onClick: removeRule, styleType: "borderless", size: "small" },
87
- React.createElement(itwinui_icons_react_1.SvgDelete, null))) : null),
88
- React.createElement("div", { className: "rule-condition" },
90
+ return (React.createElement("div", { className: "fb-component-row" },
91
+ React.createElement(itwinui_react_1.Flex, { className: "fb-row-container", gap: "s", alignItems: "flex-start" },
89
92
  React.createElement(FilterBuilderRuleProperty_1.PropertyFilterBuilderRuleProperty, { properties: properties, selectedProperty: rule.property, onSelectedPropertyChanged: onSelectedPropertyChanged, propertyRenderer: propertyRenderer, isDisabled: isDisabled }),
90
93
  property !== undefined ? operatorRenderer(property) : null,
91
94
  property !== undefined &&
92
95
  operator !== undefined &&
93
- !(0, Operators_1.isUnaryPropertyFilterOperator)(operator) ? (React.createElement("div", { className: `iui-input-container iui-with-message ${rule.errorMessage ? "iui-negative" : null}` },
94
- React.createElement("div", { className: "rule-value" }, valueRenderer(property, operator)),
95
- rule.errorMessage ? (React.createElement(React.Fragment, null,
96
- React.createElement(itwinui_icons_react_1.SvgStatusError, { className: "iui-input-icon" }),
97
- React.createElement("div", { className: "iui-message" }, rule.errorMessage))) : null)) : null)));
96
+ !(0, Operators_1.isUnaryPropertyFilterBuilderOperator)(operator) ? (React.createElement("div", { className: "fb-property-value" },
97
+ valueRenderer(property, operator),
98
+ rule.errorMessage ? (React.createElement(itwinui_react_1.Flex, null,
99
+ React.createElement(itwinui_icons_react_1.SvgStatusError, null),
100
+ React.createElement(itwinui_react_1.Text, null, rule.errorMessage))) : null)) : null,
101
+ React.createElement(FilterBuilderToolbar_1.PropertyFilterBuilderToolbar, { onAddChild: handleRuleAdded, onDelete: removeRule }))));
98
102
  }
99
103
  exports.PropertyFilterBuilderRuleRenderer = PropertyFilterBuilderRuleRenderer;
100
104
  //# sourceMappingURL=FilterBuilderRule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRule.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRule.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 \"./FilterBuilderRule.scss\";\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { SvgDelete, SvgStatusError } from \"@itwin/itwinui-icons-react\";\nimport { IconButton } from \"@itwin/itwinui-react\";\nimport {\n PropertyFilterBuilderContext,\n PropertyFilterBuilderRuleRenderingContext,\n} from \"./FilterBuilderContext\";\nimport { PropertyFilterBuilderRuleOperator } from \"./FilterBuilderRuleOperator\";\nimport { PropertyFilterBuilderRuleProperty } from \"./FilterBuilderRuleProperty\";\nimport { PropertyFilterBuilderRuleValue } from \"./FilterBuilderRuleValue\";\nimport type { PropertyFilterBuilderRule } from \"./FilterBuilderState\";\nimport type { PropertyFilterRuleOperator } from \"./Operators\";\nimport { isUnaryPropertyFilterOperator } from \"./Operators\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleRenderer]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleRendererProps {\n /** Path from [[PropertyFilterBuilder]] root to this rule. */\n path: string[];\n /** Rule to render. */\n rule: PropertyFilterBuilderRule;\n isRemovable?: boolean;\n}\n\n/**\n * Component that renders single rule in [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport function PropertyFilterBuilderRuleRenderer(\n props: PropertyFilterBuilderRuleRendererProps\n) {\n const { path, rule, isRemovable } = props;\n const { properties, actions, onRulePropertySelected } = React.useContext(\n PropertyFilterBuilderContext\n );\n const {\n ruleOperatorRenderer,\n ruleValueRenderer,\n propertyRenderer,\n isDisabled,\n } = React.useContext(PropertyFilterBuilderRuleRenderingContext);\n const { property, operator, value } = rule;\n\n const onSelectedPropertyChanged = React.useCallback(\n (newProperty?: PropertyDescription) => {\n actions.setRuleProperty(path, newProperty);\n // invoke 'onRulePropertySelected' when new property is selected. There is no way to deselect property\n // so 'newProperty' will be 'undefined' only if selected property is no longer in 'properties' list.\n if (onRulePropertySelected && newProperty)\n onRulePropertySelected(newProperty);\n },\n [path, onRulePropertySelected, actions]\n );\n\n const onRuleOperatorChange = React.useCallback(\n (newOperator: PropertyFilterRuleOperator) => {\n actions.setRuleOperator(path, newOperator);\n },\n [path, actions]\n );\n\n const onRuleValueChange = React.useCallback(\n (newValue: PropertyValue) => {\n actions.setRuleValue(path, newValue);\n },\n [path, actions]\n );\n\n const removeRule = () => actions.removeItem(path);\n\n const operatorRenderer = React.useCallback(\n (prop: PropertyDescription) => {\n if (ruleOperatorRenderer)\n return ruleOperatorRenderer({\n property: prop,\n operator,\n onChange: onRuleOperatorChange,\n });\n return (\n <PropertyFilterBuilderRuleOperator\n property={prop}\n onChange={onRuleOperatorChange}\n operator={operator}\n />\n );\n },\n [operator, ruleOperatorRenderer, onRuleOperatorChange]\n );\n\n const valueRenderer = React.useCallback(\n (prop: PropertyDescription, op: PropertyFilterRuleOperator) => {\n if (ruleValueRenderer)\n return ruleValueRenderer({\n property: prop,\n value,\n onChange: onRuleValueChange,\n operator: op,\n });\n return (\n <PropertyFilterBuilderRuleValue\n property={prop}\n onChange={onRuleValueChange}\n value={value}\n />\n );\n },\n [value, ruleValueRenderer, onRuleValueChange]\n );\n\n return (\n <div className=\"rule\">\n <div className=\"rule-remove-action\">\n {property || isRemovable ? (\n <IconButton onClick={removeRule} styleType=\"borderless\" size=\"small\">\n <SvgDelete />\n </IconButton>\n ) : null}\n </div>\n <div className=\"rule-condition\">\n <PropertyFilterBuilderRuleProperty\n properties={properties}\n selectedProperty={rule.property}\n onSelectedPropertyChanged={onSelectedPropertyChanged}\n propertyRenderer={propertyRenderer}\n isDisabled={isDisabled}\n />\n {property !== undefined ? operatorRenderer(property) : null}\n {property !== undefined &&\n operator !== undefined &&\n !isUnaryPropertyFilterOperator(operator) ? (\n <div\n className={`iui-input-container iui-with-message ${\n rule.errorMessage ? \"iui-negative\" : null\n }`}\n >\n <div className=\"rule-value\">\n {valueRenderer(property, operator)}\n </div>\n {rule.errorMessage ? (\n <>\n <SvgStatusError className=\"iui-input-icon\" />\n <div className=\"iui-message\">{rule.errorMessage}</div>\n </>\n ) : null}\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"FilterBuilderRule.js","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRule.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 \"./FilterBuilderRule.scss\";\nimport * as React from \"react\";\nimport type { PropertyDescription, PropertyValue } from \"@itwin/appui-abstract\";\nimport { SvgStatusError } from \"@itwin/itwinui-icons-react\";\nimport { Flex, Text } from \"@itwin/itwinui-react\";\nimport {\n PropertyFilterBuilderContext,\n PropertyFilterBuilderRuleRenderingContext,\n} from \"./FilterBuilderContext\";\nimport { PropertyFilterBuilderRuleOperatorRenderer } from \"./FilterBuilderRuleOperator\";\nimport { PropertyFilterBuilderRuleProperty } from \"./FilterBuilderRuleProperty\";\nimport { PropertyFilterBuilderRuleValue } from \"./FilterBuilderRuleValue\";\nimport type { PropertyFilterBuilderRule } from \"./FilterBuilderState\";\nimport {\n isUnaryPropertyFilterBuilderOperator,\n type PropertyFilterBuilderRuleOperator,\n} from \"./Operators\";\nimport { PropertyFilterBuilderToolbar } from \"./FilterBuilderToolbar\";\n\n/**\n * Props for [[PropertyFilterBuilderRuleRenderer]] component.\n * @internal\n */\nexport interface PropertyFilterBuilderRuleRendererProps {\n /** Path from [[PropertyFilterBuilder]] root to this rule. */\n path: string[];\n /** Rule to render. */\n rule: PropertyFilterBuilderRule;\n /** Function to add rule to group */\n onRuleAdded: () => void;\n}\n\n/**\n * Component that renders single rule in [[PropertyFilterBuilder]] component.\n * @internal\n */\nexport function PropertyFilterBuilderRuleRenderer(\n props: PropertyFilterBuilderRuleRendererProps\n) {\n const { path, rule, onRuleAdded } = props;\n const { properties, actions, onRulePropertySelected } = React.useContext(\n PropertyFilterBuilderContext\n );\n const {\n ruleOperatorRenderer,\n ruleValueRenderer,\n propertyRenderer,\n isDisabled,\n } = React.useContext(PropertyFilterBuilderRuleRenderingContext);\n const { property, operator, value } = rule;\n\n const onSelectedPropertyChanged = React.useCallback(\n (newProperty?: PropertyDescription) => {\n actions.setRuleProperty(path, newProperty);\n // invoke 'onRulePropertySelected' when new property is selected. There is no way to deselect property\n // so 'newProperty' will be 'undefined' only if selected property is no longer in 'properties' list.\n if (onRulePropertySelected && newProperty)\n onRulePropertySelected(newProperty);\n },\n [path, onRulePropertySelected, actions]\n );\n\n const onRuleOperatorChange = React.useCallback(\n (newOperator: PropertyFilterBuilderRuleOperator) => {\n actions.setRuleOperator(path, newOperator);\n },\n [path, actions]\n );\n\n const onRuleValueChange = React.useCallback(\n (newValue: PropertyValue) => {\n actions.setRuleValue(path, newValue);\n },\n [path, actions]\n );\n\n const removeRule = () => actions.removeItem(path);\n const handleRuleAdded = () => {\n actions.addItem([], \"RULE\");\n onRuleAdded();\n };\n\n const operatorRenderer = React.useCallback(\n (prop: PropertyDescription) => {\n if (ruleOperatorRenderer)\n return ruleOperatorRenderer({\n property: prop,\n operator,\n onChange: onRuleOperatorChange,\n });\n return (\n <PropertyFilterBuilderRuleOperatorRenderer\n property={prop}\n onChange={onRuleOperatorChange}\n operator={operator}\n />\n );\n },\n [operator, ruleOperatorRenderer, onRuleOperatorChange]\n );\n\n const valueRenderer = React.useCallback(\n (prop: PropertyDescription, op: PropertyFilterBuilderRuleOperator) => {\n if (ruleValueRenderer)\n return ruleValueRenderer({\n property: prop,\n value,\n onChange: onRuleValueChange,\n operator: op,\n });\n return (\n <PropertyFilterBuilderRuleValue\n property={prop}\n onChange={onRuleValueChange}\n value={value}\n operator={op}\n />\n );\n },\n [value, ruleValueRenderer, onRuleValueChange]\n );\n\n return (\n <div className=\"fb-component-row\">\n <Flex className=\"fb-row-container\" gap=\"s\" alignItems=\"flex-start\">\n <PropertyFilterBuilderRuleProperty\n properties={properties}\n selectedProperty={rule.property}\n onSelectedPropertyChanged={onSelectedPropertyChanged}\n propertyRenderer={propertyRenderer}\n isDisabled={isDisabled}\n />\n {property !== undefined ? operatorRenderer(property) : null}\n {property !== undefined &&\n operator !== undefined &&\n !isUnaryPropertyFilterBuilderOperator(operator) ? (\n <div className=\"fb-property-value\">\n {valueRenderer(property, operator)}\n {rule.errorMessage ? (\n <Flex>\n <SvgStatusError />\n <Text>{rule.errorMessage}</Text>\n </Flex>\n ) : null}\n </div>\n ) : null}\n <PropertyFilterBuilderToolbar\n onAddChild={handleRuleAdded}\n onDelete={removeRule}\n />\n </Flex>\n </div>\n );\n}\n"]}
@@ -2,44 +2,53 @@
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
- .rule {
7
- display: grid;
8
- grid-template-columns: min-content auto;
9
- padding: 3px 0;
10
-
11
- .rule-condition {
12
- display: grid;
13
- grid-template-columns: minmax(auto, 500px) 150px minmax(auto, 100%);
14
- grid-column-gap: var(--iui-size-m);
15
- width: calc(100% - var(--iui-size-s));
16
-
17
- .iui-input-container.iui-with-message {
18
- .rule-value {
19
- grid-area: inputs;
20
- }
5
+ .fb-row {
6
+ --background-color: var(--iui-color-background);
7
+ --border-color: var(--iui-color-border);
8
+ --operator-width: 5rem;
9
+ --property-name-width: 25%;
10
+ --condition-width: 10rem;
11
+ --toolbar-width: 6.25rem;
12
+ border: 1px solid var(--iui-color-border);
13
+ display: block;
14
+ position: relative;
15
+
16
+ &:not(:last-child) {
17
+ //only show buttons on last row to prevent visual clutter
18
+ .fb-add-rule-button:first-child {
19
+ visibility: hidden;
21
20
  }
22
21
  }
23
22
 
24
- .rule-remove-action {
25
- padding-right: var(--iui-size-s);
26
- visibility: hidden;
23
+ &:not(:first-child) {
24
+ border-top: none;
27
25
  }
28
26
 
29
- &:focus-within .rule-remove-action,
30
- &:hover .rule-remove-action {
31
- visibility: visible;
27
+ > div {
28
+ background: var(--background-color);
29
+ align-items: stretch;
30
+ overflow: hidden;
32
31
  }
33
- }
34
32
 
35
- .rule-group-items > .rule {
36
- padding-bottom: 14px;
33
+ .fb-row-container {
34
+ padding-block: var(--iui-size-s);
35
+ padding-inline: var(--iui-size-m);
36
+ flex: 1;
37
+ }
38
+
39
+ .fb-row-condition {
40
+ width: var(--condition-width);
41
+ }
37
42
 
38
- &:first-child {
39
- padding-top: 14px;
43
+ .fb-property-value {
44
+ flex: 1;
45
+ width: 15rem;
46
+ display: flex;
47
+ flex-direction: column;
40
48
  }
41
49
 
42
- &:only-child {
43
- padding-top: 3px;
50
+ .fb-row-toolbar {
51
+ width: var(--toolbar-width);
52
+ margin-left: auto;
44
53
  }
45
54
  }
@@ -1,10 +1,10 @@
1
1
  /** @packageDocumentation
2
2
  * @module PropertyFilterBuilder
3
3
  */
4
- /// <reference types="react" />
5
4
  import "./FilterBuilderRuleGroup.scss";
5
+ import * as React from "react";
6
6
  import type { PropertyFilterBuilderRuleGroup } from "./FilterBuilderState";
7
- import { PropertyFilterRuleGroupOperator } from "./Operators";
7
+ import type { PropertyFilterRuleGroupOperator } from "./Operators";
8
8
  /**
9
9
  * Props for [[PropertyFilterBuilderRuleGroupRenderer]] component.
10
10
  * @internal
@@ -14,25 +14,29 @@ export interface PropertyFilterBuilderRuleGroupRendererProps {
14
14
  path: string[];
15
15
  /** Rule group to render. */
16
16
  group: PropertyFilterBuilderRuleGroup;
17
+ /** Controls whether the group operator is toggle-able. */
18
+ isGroupOperatorDisabled?: boolean;
17
19
  }
18
20
  /**
19
21
  * Component that renders group of rules in [[PropertyFilterBuilder]] component.
20
22
  * @internal
21
23
  */
22
- export declare function PropertyFilterBuilderRuleGroupRenderer(props: PropertyFilterBuilderRuleGroupRendererProps): JSX.Element;
24
+ export declare function PropertyFilterBuilderRuleGroupRenderer(props: PropertyFilterBuilderRuleGroupRendererProps): React.JSX.Element;
23
25
  /**
24
26
  * Props for [[PropertyFilterBuilderRuleGroupOperator]] component.
25
27
  * @internal
26
28
  */
27
29
  export interface PropertyFilterBuilderRuleGroupOperatorProps {
28
30
  /** Currently selected operator. */
29
- operator: PropertyFilterRuleGroupOperator;
31
+ operator: `${PropertyFilterRuleGroupOperator}`;
30
32
  /** Callback that is invoked when selected operator changes. */
31
- onChange: (operator: PropertyFilterRuleGroupOperator) => void;
33
+ onChange: (operator: `${PropertyFilterRuleGroupOperator}`) => void;
34
+ /** Controls whether the group operator is toggle-able. */
35
+ isGroupOperatorDisabled?: boolean;
32
36
  }
33
37
  /**
34
38
  * Component that renders [[PropertyFilterBuilderRuleGroup]] operator selector.
35
39
  * @internal
36
40
  */
37
- export declare function PropertyFilterBuilderRuleGroupOperator(props: PropertyFilterBuilderRuleGroupOperatorProps): JSX.Element;
41
+ export declare function PropertyFilterBuilderRuleGroupOperator(props: PropertyFilterBuilderRuleGroupOperatorProps): React.JSX.Element;
38
42
  //# sourceMappingURL=FilterBuilderRuleGroup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBuilderRuleGroup.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleGroup.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,+BAA+B,CAAC;AAWvC,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAE9D;;;GAGG;AACH,MAAM,WAAW,2CAA2C;IAC1D,mEAAmE;IACnE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,8BAA8B,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,2CAA2C,eA+FnD;AAED;;;GAGG;AACH,MAAM,WAAW,2CAA2C;IAC1D,mCAAmC;IACnC,QAAQ,EAAE,+BAA+B,CAAC;IAC1C,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,QAAQ,EAAE,+BAA+B,KAAK,IAAI,CAAC;CAC/D;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,2CAA2C,eA8BnD"}
1
+ {"version":3,"file":"FilterBuilderRuleGroup.d.ts","sourceRoot":"","sources":["../../../../src/components-react/filter-builder/FilterBuilderRuleGroup.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,+BAA+B,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EACV,8BAA8B,EAE/B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AAGnE;;;GAGG;AACH,MAAM,WAAW,2CAA2C;IAC1D,mEAAmE;IACnE,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4BAA4B;IAC5B,KAAK,EAAE,8BAA8B,CAAC;IACtC,0DAA0D;IAC1D,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,2CAA2C,qBA0CnD;AAED;;;GAGG;AACH,MAAM,WAAW,2CAA2C;IAC1D,mCAAmC;IACnC,QAAQ,EAAE,GAAG,+BAA+B,EAAE,CAAC;IAC/C,+DAA+D;IAC/D,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,+BAA+B,EAAE,KAAK,IAAI,CAAC;IACnE,0DAA0D;IAC1D,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,sCAAsC,CACpD,KAAK,EAAE,2CAA2C,qBAcnD"}