@itwin/components-react 4.10.0 → 4.12.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 (347) hide show
  1. package/CHANGELOG.md +21 -1
  2. package/lib/cjs/components-react/UiComponents.d.ts +1 -5
  3. package/lib/cjs/components-react/UiComponents.d.ts.map +1 -1
  4. package/lib/cjs/components-react/UiComponents.js +3 -15
  5. package/lib/cjs/components-react/UiComponents.js.map +1 -1
  6. package/lib/cjs/components-react/UiComponents.json +153 -0
  7. package/lib/cjs/components-react/common/DelayedSpinner.js +3 -2
  8. package/lib/cjs/components-react/common/DelayedSpinner.js.map +1 -1
  9. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js +2 -1
  10. package/lib/cjs/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  11. package/lib/cjs/components-react/converters/NumericTypeConverter.js +4 -2
  12. package/lib/cjs/components-react/converters/NumericTypeConverter.js.map +1 -1
  13. package/lib/cjs/components-react/converters/TypeConverter.js +2 -1
  14. package/lib/cjs/components-react/converters/TypeConverter.js.map +1 -1
  15. package/lib/cjs/components-react/datepicker/DatePicker.d.ts +2 -0
  16. package/lib/cjs/components-react/datepicker/DatePicker.d.ts.map +1 -1
  17. package/lib/cjs/components-react/datepicker/DatePicker.js +43 -40
  18. package/lib/cjs/components-react/datepicker/DatePicker.js.map +1 -1
  19. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts +5 -2
  20. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  21. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js +8 -7
  22. package/lib/cjs/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  23. package/lib/cjs/components-react/datepicker/IntlFormatter.d.ts +1 -0
  24. package/lib/cjs/components-react/datepicker/IntlFormatter.d.ts.map +1 -1
  25. package/lib/cjs/components-react/datepicker/IntlFormatter.js +1 -0
  26. package/lib/cjs/components-react/datepicker/IntlFormatter.js.map +1 -1
  27. package/lib/cjs/components-react/datepicker/TimeField.d.ts.map +1 -1
  28. package/lib/cjs/components-react/datepicker/TimeField.js +28 -30
  29. package/lib/cjs/components-react/datepicker/TimeField.js.map +1 -1
  30. package/lib/cjs/components-react/editors/CustomNumberEditor.js +8 -6
  31. package/lib/cjs/components-react/editors/CustomNumberEditor.js.map +1 -1
  32. package/lib/cjs/components-react/editors/DateTimeEditor.js +5 -3
  33. package/lib/cjs/components-react/editors/DateTimeEditor.js.map +1 -1
  34. package/lib/cjs/components-react/editors/EnumEditor.d.ts +0 -1
  35. package/lib/cjs/components-react/editors/EnumEditor.d.ts.map +1 -1
  36. package/lib/cjs/components-react/editors/EnumEditor.js +2 -3
  37. package/lib/cjs/components-react/editors/EnumEditor.js.map +1 -1
  38. package/lib/cjs/components-react/editors/PopupButton.d.ts.map +1 -1
  39. package/lib/cjs/components-react/editors/PopupButton.js +8 -5
  40. package/lib/cjs/components-react/editors/PopupButton.js.map +1 -1
  41. package/lib/cjs/components-react/editors/TextEditor.d.ts +0 -1
  42. package/lib/cjs/components-react/editors/TextEditor.d.ts.map +1 -1
  43. package/lib/cjs/components-react/editors/TextEditor.js +5 -4
  44. package/lib/cjs/components-react/editors/TextEditor.js.map +1 -1
  45. package/lib/cjs/components-react/editors/TextareaEditor.d.ts +0 -1
  46. package/lib/cjs/components-react/editors/TextareaEditor.d.ts.map +1 -1
  47. package/lib/cjs/components-react/editors/TextareaEditor.js +1 -2
  48. package/lib/cjs/components-react/editors/TextareaEditor.js.map +1 -1
  49. package/lib/cjs/components-react/favorite/FavoritePropertyList.js +3 -3
  50. package/lib/cjs/components-react/favorite/FavoritePropertyList.js.map +1 -1
  51. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -1
  52. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js +4 -3
  53. package/lib/cjs/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -1
  54. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js +2 -1
  55. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  56. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  57. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js +6 -5
  58. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  59. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js +4 -3
  60. package/lib/cjs/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  61. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js +3 -3
  62. package/lib/cjs/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  63. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -1
  64. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js +4 -3
  65. package/lib/cjs/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -1
  66. package/lib/cjs/components-react/filter-builder/Operators.d.ts +1 -0
  67. package/lib/cjs/components-react/filter-builder/Operators.d.ts.map +1 -1
  68. package/lib/cjs/components-react/filter-builder/Operators.js +1 -0
  69. package/lib/cjs/components-react/filter-builder/Operators.js.map +1 -1
  70. package/lib/cjs/components-react/filtering/FilteringInput.d.ts +0 -3
  71. package/lib/cjs/components-react/filtering/FilteringInput.d.ts.map +1 -1
  72. package/lib/cjs/components-react/filtering/FilteringInput.js +5 -7
  73. package/lib/cjs/components-react/filtering/FilteringInput.js.map +1 -1
  74. package/lib/cjs/components-react/filtering/ResultSelector.d.ts +0 -1
  75. package/lib/cjs/components-react/filtering/ResultSelector.d.ts.map +1 -1
  76. package/lib/cjs/components-react/filtering/ResultSelector.js +1 -2
  77. package/lib/cjs/components-react/filtering/ResultSelector.js.map +1 -1
  78. package/lib/cjs/components-react/properties/ValueRendererManager.d.ts +3 -0
  79. package/lib/cjs/components-react/properties/ValueRendererManager.d.ts.map +1 -1
  80. package/lib/cjs/components-react/properties/ValueRendererManager.js +12 -1
  81. package/lib/cjs/components-react/properties/ValueRendererManager.js.map +1 -1
  82. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js +4 -3
  83. package/lib/cjs/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  84. package/lib/cjs/components-react/properties/renderers/CustomizablePropertyRenderer.d.ts +25 -0
  85. package/lib/cjs/components-react/properties/renderers/CustomizablePropertyRenderer.d.ts.map +1 -0
  86. package/lib/cjs/components-react/properties/renderers/CustomizablePropertyRenderer.js +62 -0
  87. package/lib/cjs/components-react/properties/renderers/CustomizablePropertyRenderer.js.map +1 -0
  88. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  89. package/lib/cjs/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  90. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +3 -4
  91. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts.map +1 -1
  92. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js +6 -44
  93. package/lib/cjs/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  94. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts +1 -1
  95. package/lib/cjs/components-react/properties/renderers/PropertyView.d.ts.map +1 -1
  96. package/lib/cjs/components-react/properties/renderers/PropertyView.js +2 -3
  97. package/lib/cjs/components-react/properties/renderers/PropertyView.js.map +1 -1
  98. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  99. package/lib/cjs/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  100. package/lib/cjs/components-react/properties/renderers/value/Common.js +2 -1
  101. package/lib/cjs/components-react/properties/renderers/value/Common.js.map +1 -1
  102. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.d.ts.map +1 -1
  103. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +8 -11
  104. package/lib/cjs/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  105. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +6 -3
  106. package/lib/cjs/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  107. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js +2 -1
  108. package/lib/cjs/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  109. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +2 -1
  110. package/lib/cjs/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  111. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -1
  112. package/lib/cjs/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  113. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  114. package/lib/cjs/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  115. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  116. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js +1 -3
  117. package/lib/cjs/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  118. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -3
  119. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  120. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js +90 -80
  121. package/lib/cjs/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  122. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js +13 -11
  123. package/lib/cjs/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  124. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  125. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  126. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +2 -1
  127. package/lib/cjs/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  128. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +2 -1
  129. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  130. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  131. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  132. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +3 -2
  133. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  134. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  135. package/lib/cjs/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  136. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  137. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  138. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +1 -1
  139. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
  140. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +22 -12
  141. package/lib/cjs/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  142. package/lib/cjs/components-react/selectable-content/SelectableContent.js +3 -2
  143. package/lib/cjs/components-react/selectable-content/SelectableContent.js.map +1 -1
  144. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  145. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js +19 -21
  146. package/lib/cjs/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  147. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  148. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js +1 -4
  149. package/lib/cjs/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  150. package/lib/cjs/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  151. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js +2 -3
  152. package/lib/cjs/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  153. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js +6 -5
  154. package/lib/cjs/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  155. package/lib/cjs/components-react/tree/controlled/TreeModel.js +8 -7
  156. package/lib/cjs/components-react/tree/controlled/TreeModel.js.map +1 -1
  157. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js +8 -6
  158. package/lib/cjs/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  159. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  160. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js +3 -2
  161. package/lib/cjs/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  162. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js +2 -1
  163. package/lib/cjs/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  164. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js +4 -2
  165. package/lib/cjs/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  166. package/lib/cjs/components-react/useTranslation.d.ts +7 -0
  167. package/lib/cjs/components-react/useTranslation.d.ts.map +1 -0
  168. package/lib/cjs/components-react/useTranslation.js +52 -0
  169. package/lib/cjs/components-react/useTranslation.js.map +1 -0
  170. package/lib/cjs/components-react.d.ts +2 -0
  171. package/lib/cjs/components-react.d.ts.map +1 -1
  172. package/lib/cjs/components-react.js +2 -0
  173. package/lib/cjs/components-react.js.map +1 -1
  174. package/lib/esm/components-react/UiComponents.d.ts +1 -5
  175. package/lib/esm/components-react/UiComponents.d.ts.map +1 -1
  176. package/lib/esm/components-react/UiComponents.js +3 -15
  177. package/lib/esm/components-react/UiComponents.js.map +1 -1
  178. package/lib/esm/components-react/UiComponents.json +153 -0
  179. package/lib/esm/components-react/common/DelayedSpinner.js +3 -2
  180. package/lib/esm/components-react/common/DelayedSpinner.js.map +1 -1
  181. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js +2 -1
  182. package/lib/esm/components-react/common/UseDebouncedAsyncValue.js.map +1 -1
  183. package/lib/esm/components-react/converters/NumericTypeConverter.js +4 -2
  184. package/lib/esm/components-react/converters/NumericTypeConverter.js.map +1 -1
  185. package/lib/esm/components-react/converters/TypeConverter.js +2 -1
  186. package/lib/esm/components-react/converters/TypeConverter.js.map +1 -1
  187. package/lib/esm/components-react/datepicker/DatePicker.d.ts +2 -0
  188. package/lib/esm/components-react/datepicker/DatePicker.d.ts.map +1 -1
  189. package/lib/esm/components-react/datepicker/DatePicker.js +43 -40
  190. package/lib/esm/components-react/datepicker/DatePicker.js.map +1 -1
  191. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts +5 -2
  192. package/lib/esm/components-react/datepicker/DatePickerPopupButton.d.ts.map +1 -1
  193. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js +8 -7
  194. package/lib/esm/components-react/datepicker/DatePickerPopupButton.js.map +1 -1
  195. package/lib/esm/components-react/datepicker/IntlFormatter.d.ts +1 -0
  196. package/lib/esm/components-react/datepicker/IntlFormatter.d.ts.map +1 -1
  197. package/lib/esm/components-react/datepicker/IntlFormatter.js +1 -0
  198. package/lib/esm/components-react/datepicker/IntlFormatter.js.map +1 -1
  199. package/lib/esm/components-react/datepicker/TimeField.d.ts.map +1 -1
  200. package/lib/esm/components-react/datepicker/TimeField.js +28 -30
  201. package/lib/esm/components-react/datepicker/TimeField.js.map +1 -1
  202. package/lib/esm/components-react/editors/CustomNumberEditor.js +8 -6
  203. package/lib/esm/components-react/editors/CustomNumberEditor.js.map +1 -1
  204. package/lib/esm/components-react/editors/DateTimeEditor.js +5 -3
  205. package/lib/esm/components-react/editors/DateTimeEditor.js.map +1 -1
  206. package/lib/esm/components-react/editors/EnumEditor.d.ts +0 -1
  207. package/lib/esm/components-react/editors/EnumEditor.d.ts.map +1 -1
  208. package/lib/esm/components-react/editors/EnumEditor.js +2 -3
  209. package/lib/esm/components-react/editors/EnumEditor.js.map +1 -1
  210. package/lib/esm/components-react/editors/PopupButton.d.ts.map +1 -1
  211. package/lib/esm/components-react/editors/PopupButton.js +9 -6
  212. package/lib/esm/components-react/editors/PopupButton.js.map +1 -1
  213. package/lib/esm/components-react/editors/TextEditor.d.ts +0 -1
  214. package/lib/esm/components-react/editors/TextEditor.d.ts.map +1 -1
  215. package/lib/esm/components-react/editors/TextEditor.js +5 -4
  216. package/lib/esm/components-react/editors/TextEditor.js.map +1 -1
  217. package/lib/esm/components-react/editors/TextareaEditor.d.ts +0 -1
  218. package/lib/esm/components-react/editors/TextareaEditor.d.ts.map +1 -1
  219. package/lib/esm/components-react/editors/TextareaEditor.js +1 -2
  220. package/lib/esm/components-react/editors/TextareaEditor.js.map +1 -1
  221. package/lib/esm/components-react/favorite/FavoritePropertyList.js +3 -3
  222. package/lib/esm/components-react/favorite/FavoritePropertyList.js.map +1 -1
  223. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.d.ts.map +1 -1
  224. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js +4 -3
  225. package/lib/esm/components-react/filter-builder/FilterBuilderLogicalOperator.js.map +1 -1
  226. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js +2 -1
  227. package/lib/esm/components-react/filter-builder/FilterBuilderRuleOperator.js.map +1 -1
  228. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.d.ts.map +1 -1
  229. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js +6 -5
  230. package/lib/esm/components-react/filter-builder/FilterBuilderRuleProperty.js.map +1 -1
  231. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js +4 -3
  232. package/lib/esm/components-react/filter-builder/FilterBuilderRuleValue.js.map +1 -1
  233. package/lib/esm/components-react/filter-builder/FilterBuilderState.js +3 -3
  234. package/lib/esm/components-react/filter-builder/FilterBuilderState.js.map +1 -1
  235. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.d.ts.map +1 -1
  236. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js +4 -3
  237. package/lib/esm/components-react/filter-builder/FilterBuilderToolbar.js.map +1 -1
  238. package/lib/esm/components-react/filter-builder/Operators.d.ts +1 -0
  239. package/lib/esm/components-react/filter-builder/Operators.d.ts.map +1 -1
  240. package/lib/esm/components-react/filter-builder/Operators.js +1 -0
  241. package/lib/esm/components-react/filter-builder/Operators.js.map +1 -1
  242. package/lib/esm/components-react/filtering/FilteringInput.d.ts +0 -3
  243. package/lib/esm/components-react/filtering/FilteringInput.d.ts.map +1 -1
  244. package/lib/esm/components-react/filtering/FilteringInput.js +6 -8
  245. package/lib/esm/components-react/filtering/FilteringInput.js.map +1 -1
  246. package/lib/esm/components-react/filtering/ResultSelector.d.ts +0 -1
  247. package/lib/esm/components-react/filtering/ResultSelector.d.ts.map +1 -1
  248. package/lib/esm/components-react/filtering/ResultSelector.js +1 -2
  249. package/lib/esm/components-react/filtering/ResultSelector.js.map +1 -1
  250. package/lib/esm/components-react/properties/ValueRendererManager.d.ts +3 -0
  251. package/lib/esm/components-react/properties/ValueRendererManager.d.ts.map +1 -1
  252. package/lib/esm/components-react/properties/ValueRendererManager.js +12 -1
  253. package/lib/esm/components-react/properties/ValueRendererManager.js.map +1 -1
  254. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js +4 -3
  255. package/lib/esm/components-react/properties/renderers/CommonPropertyRenderer.js.map +1 -1
  256. package/lib/esm/components-react/properties/renderers/CustomizablePropertyRenderer.d.ts +25 -0
  257. package/lib/esm/components-react/properties/renderers/CustomizablePropertyRenderer.d.ts.map +1 -0
  258. package/lib/esm/components-react/properties/renderers/CustomizablePropertyRenderer.js +35 -0
  259. package/lib/esm/components-react/properties/renderers/CustomizablePropertyRenderer.js.map +1 -0
  260. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js +1 -1
  261. package/lib/esm/components-react/properties/renderers/NonPrimitivePropertyRenderer.js.map +1 -1
  262. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts +3 -4
  263. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.d.ts.map +1 -1
  264. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js +3 -21
  265. package/lib/esm/components-react/properties/renderers/PrimitivePropertyRenderer.js.map +1 -1
  266. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts +1 -1
  267. package/lib/esm/components-react/properties/renderers/PropertyView.d.ts.map +1 -1
  268. package/lib/esm/components-react/properties/renderers/PropertyView.js +2 -3
  269. package/lib/esm/components-react/properties/renderers/PropertyView.js.map +1 -1
  270. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js +4 -4
  271. package/lib/esm/components-react/properties/renderers/label/PropertyLabelRenderer.js.map +1 -1
  272. package/lib/esm/components-react/properties/renderers/value/Common.js +2 -1
  273. package/lib/esm/components-react/properties/renderers/value/Common.js.map +1 -1
  274. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.d.ts.map +1 -1
  275. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js +8 -11
  276. package/lib/esm/components-react/properties/renderers/value/MultilineTextPropertyValueRenderer.js.map +1 -1
  277. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js +6 -3
  278. package/lib/esm/components-react/properties/renderers/value/PrimitivePropertyValueRenderer.js.map +1 -1
  279. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js +2 -1
  280. package/lib/esm/components-react/propertygrid/PropertyCategoryRendererManager.js.map +1 -1
  281. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js +2 -1
  282. package/lib/esm/components-react/propertygrid/component/ColumnResizingPropertyListPropsSupplier.js.map +1 -1
  283. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js +2 -1
  284. package/lib/esm/components-react/propertygrid/component/PropertyCategoryBlock.js.map +1 -1
  285. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js +2 -2
  286. package/lib/esm/components-react/propertygrid/component/PropertyGridCommons.js.map +1 -1
  287. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.d.ts.map +1 -1
  288. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js +1 -3
  289. package/lib/esm/components-react/propertygrid/component/PropertyGridEventsRelatedPropsSupplier.js.map +1 -1
  290. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts +1 -3
  291. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.d.ts.map +1 -1
  292. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js +90 -80
  293. package/lib/esm/components-react/propertygrid/component/VirtualizedPropertyGrid.js.map +1 -1
  294. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js +13 -11
  295. package/lib/esm/components-react/propertygrid/dataproviders/FilteringDataProvider.js.map +1 -1
  296. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js +2 -2
  297. package/lib/esm/components-react/propertygrid/dataproviders/filterers/CompositePropertyDataFilterer.js.map +1 -1
  298. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js +2 -1
  299. package/lib/esm/components-react/propertygrid/dataproviders/filterers/DisplayValuePropertyDataFilterer.js.map +1 -1
  300. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js +2 -1
  301. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableCustomGridCategory.js.map +1 -1
  302. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js +2 -2
  303. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableFlatGridItem.js.map +1 -1
  304. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js +3 -2
  305. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridCategory.js.map +1 -1
  306. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js +1 -1
  307. package/lib/esm/components-react/propertygrid/internal/flat-items/MutableGridItemFactory.js.map +1 -1
  308. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js +1 -1
  309. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatNonPrimitivePropertyRenderer.js.map +1 -1
  310. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts +1 -1
  311. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.d.ts.map +1 -1
  312. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js +22 -12
  313. package/lib/esm/components-react/propertygrid/internal/flat-properties/FlatPropertyRenderer.js.map +1 -1
  314. package/lib/esm/components-react/selectable-content/SelectableContent.js +3 -2
  315. package/lib/esm/components-react/selectable-content/SelectableContent.js.map +1 -1
  316. package/lib/esm/components-react/toolbar/InternalToolbarComponent.d.ts.map +1 -1
  317. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js +20 -22
  318. package/lib/esm/components-react/toolbar/InternalToolbarComponent.js.map +1 -1
  319. package/lib/esm/components-react/toolbar/PopupItemWithDrag.d.ts.map +1 -1
  320. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js +2 -5
  321. package/lib/esm/components-react/toolbar/PopupItemWithDrag.js.map +1 -1
  322. package/lib/esm/components-react/toolbar/PopupItemsPanel.d.ts.map +1 -1
  323. package/lib/esm/components-react/toolbar/PopupItemsPanel.js +3 -4
  324. package/lib/esm/components-react/toolbar/PopupItemsPanel.js.map +1 -1
  325. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js +6 -5
  326. package/lib/esm/components-react/toolbar/useConditionalSynchedItems.js.map +1 -1
  327. package/lib/esm/components-react/tree/controlled/TreeModel.js +8 -7
  328. package/lib/esm/components-react/tree/controlled/TreeModel.js.map +1 -1
  329. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js +8 -6
  330. package/lib/esm/components-react/tree/controlled/TreeNodeLoader.js.map +1 -1
  331. package/lib/esm/components-react/tree/controlled/component/ControlledTree.d.ts.map +1 -1
  332. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js +3 -2
  333. package/lib/esm/components-react/tree/controlled/component/ControlledTree.js.map +1 -1
  334. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js +2 -1
  335. package/lib/esm/components-react/tree/controlled/internal/SparseTree.js.map +1 -1
  336. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js +4 -2
  337. package/lib/esm/components-react/tree/controlled/internal/TreeSelectionManager.js.map +1 -1
  338. package/lib/esm/components-react/useTranslation.d.ts +7 -0
  339. package/lib/esm/components-react/useTranslation.d.ts.map +1 -0
  340. package/lib/esm/components-react/useTranslation.js +25 -0
  341. package/lib/esm/components-react/useTranslation.js.map +1 -0
  342. package/lib/esm/components-react.d.ts +2 -0
  343. package/lib/esm/components-react.d.ts.map +1 -1
  344. package/lib/esm/components-react.js +2 -0
  345. package/lib/esm/components-react.js.map +1 -1
  346. package/lib/public/locales/en/UiComponents.json +7 -1
  347. package/package.json +5 -6
@@ -27,6 +27,9 @@ import { PropertyGridEventsRelatedPropsSupplier } from "./PropertyGridEventsRela
27
27
  import { useElementsScrollStorage } from "../../common/UseElementsScrollStorage";
28
28
  const [PropertyGridInternalContextProvider, _PropertyGridInternalContextConsumer, usePropertyGridInternalContext,] = createContextWithMandatoryProvider("PropertyGridInternalContext");
29
29
  const ACTION_BUTTON_DEFAULT_WIDTH = 90;
30
+ const CATEGORY_HEADER_HEIGHT = 42;
31
+ const CATEGORY_PROPERTY_HEIGHT = 28;
32
+ const VERTICAL_CATEGORY_PROPERTY_HEIGHT = 48;
30
33
  /**
31
34
  * VirtualizedPropertyGrid React component.
32
35
  * @public
@@ -34,6 +37,7 @@ const ACTION_BUTTON_DEFAULT_WIDTH = 90;
34
37
  export class VirtualizedPropertyGrid extends React.Component {
35
38
  /** @internal */
36
39
  constructor(props) {
40
+ var _a;
37
41
  super(props);
38
42
  this._listRef = React.createRef();
39
43
  this._handleNodeHeightChange = (index, key, newHeight) => {
@@ -44,9 +48,8 @@ export class VirtualizedPropertyGrid extends React.Component {
44
48
  return {
45
49
  ...state,
46
50
  dynamicNodeHeights: new Map(state.dynamicNodeHeights).set(key, newHeight),
47
- resetIndex: index,
48
51
  };
49
- });
52
+ }, () => this._listRef.current.resetAfterIndex(index));
50
53
  };
51
54
  this._calculateNodeHeightByIndex = (index) => {
52
55
  const node = this.state.gridItems[index];
@@ -67,14 +70,13 @@ export class VirtualizedPropertyGrid extends React.Component {
67
70
  };
68
71
  this.state = {
69
72
  gridItems: [],
70
- orientation: props.orientation ??
71
- PropertyGridCommons.getCurrentOrientation(props.width, undefined, props.isOrientationFixed, props.horizontalOrientationMinWidth),
73
+ orientation: (_a = props.orientation) !== null && _a !== void 0 ? _a : PropertyGridCommons.getCurrentOrientation(props.width, undefined, props.isOrientationFixed, props.horizontalOrientationMinWidth),
72
74
  dynamicNodeHeights: new Map(),
73
- resetIndex: 0,
74
75
  };
75
76
  }
76
77
  /** @internal */
77
- componentDidUpdate(prevProps, prevState) {
78
+ componentDidUpdate(prevProps) {
79
+ var _a;
78
80
  if (this.props.orientation !== prevProps.orientation ||
79
81
  this.props.isOrientationFixed !== prevProps.isOrientationFixed ||
80
82
  this.props.horizontalOrientationMinWidth !==
@@ -87,7 +89,7 @@ export class VirtualizedPropertyGrid extends React.Component {
87
89
  this._listRef.current.resetAfterIndex(0);
88
90
  }
89
91
  if (this.props.highlight !== prevProps.highlight &&
90
- this.props.highlight?.activeHighlight &&
92
+ ((_a = this.props.highlight) === null || _a === void 0 ? void 0 : _a.activeHighlight) &&
91
93
  this.state.gridItems.length !== 0) {
92
94
  let index = 0;
93
95
  let foundMatchingItem = false;
@@ -109,11 +111,6 @@ export class VirtualizedPropertyGrid extends React.Component {
109
111
  this._listRef.current.scrollToItem(index);
110
112
  }
111
113
  }
112
- if (this.state.dynamicNodeHeights !== prevState.dynamicNodeHeights) {
113
- // istanbul ignore else
114
- if (this._listRef.current)
115
- this._listRef.current.resetAfterIndex(this.state.resetIndex);
116
- }
117
114
  }
118
115
  /** @internal */
119
116
  static getDerivedStateFromProps(props, state) {
@@ -129,9 +126,6 @@ export class VirtualizedPropertyGrid extends React.Component {
129
126
  const currentOrientation = PropertyGridCommons.getCurrentOrientation(width, orientation, isOrientationFixed, horizontalOrientationMinWidth);
130
127
  if (currentOrientation !== this.state.orientation) {
131
128
  this.setState({ orientation: currentOrientation });
132
- // istanbul ignore else
133
- if (this._listRef.current)
134
- this._listRef.current.resetAfterIndex(0);
135
129
  }
136
130
  }
137
131
  /**
@@ -140,31 +134,24 @@ export class VirtualizedPropertyGrid extends React.Component {
140
134
  * @returns current height of node.
141
135
  */
142
136
  calculateNodeHeight(node) {
143
- const categoryHeaderHeight = 38;
144
- const categoryHeaderPadding = 4;
145
- const categoryPropertyHeight = 27;
146
137
  const bottomBorderPadding = 5;
147
- const verticalPrimitivePropertyHeight = 55;
148
138
  return (getPropertyHeight(this.state) +
149
139
  node.lastInNumberOfCategories * bottomBorderPadding);
150
140
  function getPropertyHeight(state) {
151
141
  const dynamicHeight = state.dynamicNodeHeights.get(node.key);
152
142
  if (dynamicHeight !== undefined) {
153
143
  if (node instanceof MutableCustomGridCategory) {
154
- return (categoryHeaderHeight +
155
- categoryHeaderPadding +
144
+ return (CATEGORY_HEADER_HEIGHT +
156
145
  (node.isExpanded ? dynamicHeight + bottomBorderPadding : 0));
157
146
  }
158
- return (dynamicHeight + (state.orientation === Orientation.Vertical ? 28 : 0));
147
+ return dynamicHeight;
159
148
  }
160
149
  if (node.type === FlatGridItemType.Category) {
161
- return categoryHeaderHeight + categoryHeaderPadding;
162
- }
163
- if (state.orientation === Orientation.Vertical &&
164
- node.type === FlatGridItemType.Primitive) {
165
- return verticalPrimitivePropertyHeight;
150
+ return CATEGORY_HEADER_HEIGHT;
166
151
  }
167
- return categoryPropertyHeight;
152
+ return state.orientation === Orientation.Vertical
153
+ ? VERTICAL_CATEGORY_PROPERTY_HEIGHT
154
+ : CATEGORY_PROPERTY_HEIGHT;
168
155
  }
169
156
  }
170
157
  calculateEstimatedHeight() {
@@ -175,51 +162,55 @@ export class VirtualizedPropertyGrid extends React.Component {
175
162
  }
176
163
  /** @internal */
177
164
  render() {
178
- const defaultActionButtonWidth = (this.props.actionButtonRenderers?.length ?? 0) > 0
165
+ var _a, _b;
166
+ const defaultActionButtonWidth = ((_b = (_a = this.props.actionButtonRenderers) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0
179
167
  ? ACTION_BUTTON_DEFAULT_WIDTH
180
168
  : undefined;
181
169
  return (React.createElement(ColumnResizingPropertyListPropsSupplier, { orientation: this.state.orientation, width: this.props.width, minLabelWidth: this.props.minLabelWidth, minValueWidth: this.props.minValueWidth, actionButtonWidth: this.props.actionButtonWidth !== undefined
182
170
  ? this.props.actionButtonWidth
183
- : defaultActionButtonWidth, maxPropertyDepth: this._getMaxItemDepth() }, (columnResizeContext) => (React.createElement(PropertyGridEventsRelatedPropsSupplier, { isPropertySelectionEnabled: this.props.isPropertySelectionEnabled ?? false, isPropertySelectionOnRightClickEnabled: this.props.isPropertySelectionOnRightClickEnabled, isPropertyEditingEnabled: this.props.isPropertyEditingEnabled, onPropertyContextMenu: this.props.onPropertyContextMenu, onPropertyUpdated: this.props.onPropertyUpdated, onPropertySelectionChanged: this.props.onPropertySelectionChanged, isPropertyHoverEnabled: this.props.isPropertyHoverEnabled ?? false }, (selectionContext) => {
184
- const gridContext = {
185
- orientation: columnResizeContext.orientation,
186
- gridWidth: this.props.width,
187
- isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,
188
- isPropertySelectionEnabled: selectionContext.isPropertySelectionEnabled,
189
- selectedPropertyKey: selectionContext.selectedPropertyKey,
190
- onPropertyClicked: selectionContext.onPropertyClicked,
191
- onPropertyRightClicked: selectionContext.onPropertyRightClicked,
192
- onPropertyContextMenu: selectionContext.onPropertyContextMenu,
193
- editingPropertyKey: selectionContext.editingPropertyKey,
194
- onEditCommit: selectionContext.onEditCommit,
195
- onEditCancel: selectionContext.onEditCancel,
196
- eventHandler: this.props.eventHandler,
197
- dataProvider: this.props.dataProvider,
198
- actionButtonRenderers: this.props.actionButtonRenderers,
199
- propertyValueRendererManager: this.props.propertyValueRendererManager,
200
- propertyCategoryRendererManager: this.props.propertyCategoryRendererManager,
201
- columnRatio: columnResizeContext.columnRatio,
202
- columnInfo: columnResizeContext.columnInfo,
203
- isResizeHandleBeingDragged: columnResizeContext.isResizeHandleBeingDragged,
204
- isResizeHandleHovered: columnResizeContext.isResizeHandleHovered,
205
- onColumnRatioChanged: columnResizeContext.onColumnChanged,
206
- onResizeHandleDragChanged: columnResizeContext.onResizeHandleDragChanged,
207
- onResizeHandleHoverChanged: columnResizeContext.onResizeHandleHoverChanged,
208
- highlight: this.props.highlight,
209
- };
210
- const renderContext = {
211
- gridItems: this.state.gridItems,
212
- gridEventHandler: this.props.eventHandler,
213
- gridModel: this.props.model,
214
- style: this.props.style,
215
- className: this.props.className,
216
- onItemHeightChanged: this._handleNodeHeightChange,
217
- gridContext,
218
- };
219
- return (React.createElement(PropertyGridInternalContextProvider, { value: renderContext },
220
- React.createElement("div", { className: classnames("components-virtualized-property-grid", "components-smallEditor-host") },
221
- React.createElement(VariableSizeList, { className: classnames("components-property-grid-wrapper", "ReactWindow__VariableSizeList", this.props.className), width: this.props.width, height: this.props.height, itemCount: this.state.gridItems.length, itemSize: this._calculateNodeHeightByIndex, estimatedItemSize: this.calculateEstimatedHeight(), overscanCount: 10, layout: "vertical", style: this.props.style, itemKey: this._getNodeKey, ref: this._listRef }, FlatGridItemNode))));
222
- }))));
171
+ : defaultActionButtonWidth, maxPropertyDepth: this._getMaxItemDepth() }, (columnResizeContext) => {
172
+ var _a, _b;
173
+ return (React.createElement(PropertyGridEventsRelatedPropsSupplier, { isPropertySelectionEnabled: (_a = this.props.isPropertySelectionEnabled) !== null && _a !== void 0 ? _a : false, isPropertySelectionOnRightClickEnabled: this.props.isPropertySelectionOnRightClickEnabled, isPropertyEditingEnabled: this.props.isPropertyEditingEnabled, onPropertyContextMenu: this.props.onPropertyContextMenu, onPropertyUpdated: this.props.onPropertyUpdated, onPropertySelectionChanged: this.props.onPropertySelectionChanged, isPropertyHoverEnabled: (_b = this.props.isPropertyHoverEnabled) !== null && _b !== void 0 ? _b : false }, (selectionContext) => {
174
+ const gridContext = {
175
+ orientation: columnResizeContext.orientation,
176
+ gridWidth: this.props.width,
177
+ isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,
178
+ isPropertySelectionEnabled: selectionContext.isPropertySelectionEnabled,
179
+ selectedPropertyKey: selectionContext.selectedPropertyKey,
180
+ onPropertyClicked: selectionContext.onPropertyClicked,
181
+ onPropertyRightClicked: selectionContext.onPropertyRightClicked,
182
+ onPropertyContextMenu: selectionContext.onPropertyContextMenu,
183
+ editingPropertyKey: selectionContext.editingPropertyKey,
184
+ onEditCommit: selectionContext.onEditCommit,
185
+ onEditCancel: selectionContext.onEditCancel,
186
+ eventHandler: this.props.eventHandler,
187
+ dataProvider: this.props.dataProvider,
188
+ actionButtonRenderers: this.props.actionButtonRenderers,
189
+ propertyValueRendererManager: this.props.propertyValueRendererManager,
190
+ propertyCategoryRendererManager: this.props.propertyCategoryRendererManager,
191
+ columnRatio: columnResizeContext.columnRatio,
192
+ columnInfo: columnResizeContext.columnInfo,
193
+ isResizeHandleBeingDragged: columnResizeContext.isResizeHandleBeingDragged,
194
+ isResizeHandleHovered: columnResizeContext.isResizeHandleHovered,
195
+ onColumnRatioChanged: columnResizeContext.onColumnChanged,
196
+ onResizeHandleDragChanged: columnResizeContext.onResizeHandleDragChanged,
197
+ onResizeHandleHoverChanged: columnResizeContext.onResizeHandleHoverChanged,
198
+ highlight: this.props.highlight,
199
+ };
200
+ const renderContext = {
201
+ gridItems: this.state.gridItems,
202
+ gridEventHandler: this.props.eventHandler,
203
+ gridModel: this.props.model,
204
+ style: this.props.style,
205
+ className: this.props.className,
206
+ onItemHeightChanged: this._handleNodeHeightChange,
207
+ gridContext,
208
+ };
209
+ return (React.createElement(PropertyGridInternalContextProvider, { value: renderContext },
210
+ React.createElement("div", { className: classnames("components-virtualized-property-grid", "components-smallEditor-host") },
211
+ React.createElement(VariableSizeList, { className: classnames("components-property-grid-wrapper", "ReactWindow__VariableSizeList", this.props.className), width: this.props.width, height: this.props.height, itemCount: this.state.gridItems.length, itemSize: this._calculateNodeHeightByIndex, estimatedItemSize: this.calculateEstimatedHeight(), overscanCount: 10, layout: "vertical", style: this.props.style, itemKey: this._getNodeKey, ref: this._listRef }, FlatGridItemNode))));
212
+ }));
213
+ }));
223
214
  }
224
215
  }
225
216
  /**
@@ -233,20 +224,38 @@ export function useVirtualizedPropertyGridLayoutStorage() {
233
224
  const FlatGridItemNode = React.memo(({ index, style: virtualizedListStyle }) => {
234
225
  const { gridItems, gridEventHandler, gridModel, gridContext, className, style, onItemHeightChanged, } = usePropertyGridInternalContext(FlatGridItemNode);
235
226
  const node = gridItems[index];
227
+ const divRef = React.useRef(null);
228
+ const previousHeightRef = React.useRef(0);
236
229
  const onExpansionToggled = React.useCallback(() => gridEventHandler.onExpansionToggled(node.selectionKey), [gridEventHandler, node.selectionKey]);
237
230
  const onHeightChanged = React.useCallback((newHeight) => onItemHeightChanged(index, node.key, newHeight), [onItemHeightChanged, index, node.key]);
231
+ const minHeight = React.useMemo(() => {
232
+ if (node.type === FlatGridItemType.Category)
233
+ return CATEGORY_HEADER_HEIGHT;
234
+ return gridContext.orientation === Orientation.Vertical
235
+ ? VERTICAL_CATEGORY_PROPERTY_HEIGHT
236
+ : CATEGORY_PROPERTY_HEIGHT;
237
+ }, [gridContext.orientation, node.type]);
238
+ React.useLayoutEffect(() => {
239
+ assert(divRef.current !== null);
240
+ const refHeight = divRef.current.getBoundingClientRect().height;
241
+ const currentHeight = Math.max(refHeight, minHeight);
242
+ if (currentHeight !== previousHeightRef.current) {
243
+ onHeightChanged(currentHeight);
244
+ previousHeightRef.current = currentHeight;
245
+ }
246
+ });
238
247
  function getDisplayNode() {
248
+ var _a, _b, _c, _d, _e, _f, _g;
239
249
  const lastInNumberOfCategories = node.lastInNumberOfCategories;
240
250
  switch (node.type) {
241
251
  case FlatGridItemType.Category:
242
- const categoryRendererManager = gridContext.propertyCategoryRendererManager ??
243
- PropertyCategoryRendererManager.defaultManager;
252
+ const categoryRendererManager = (_a = gridContext.propertyCategoryRendererManager) !== null && _a !== void 0 ? _a : PropertyCategoryRendererManager.defaultManager;
244
253
  const customRenderer = categoryRendererManager.getCategoryComponent(node);
245
254
  const wrapperClassName = classnames("virtualized-grid-node-content", customRenderer !== undefined
246
255
  ? "virtualized-grid-node-custom-category"
247
256
  : "virtualized-grid-node-category");
248
257
  return (React.createElement(FlatItemNestedBorderWrapper, { borderCount: node.depth, bottomBorderCount: lastInNumberOfCategories, className: wrapperClassName },
249
- React.createElement(PropertyCategoryBlock, { className: className, style: style, category: node.derivedCategory, onExpansionToggled: onExpansionToggled, highlight: gridContext.highlight?.filteredTypes?.includes(FilteredType.Category)
258
+ React.createElement(PropertyCategoryBlock, { className: className, style: style, category: node.derivedCategory, onExpansionToggled: onExpansionToggled, highlight: ((_c = (_b = gridContext.highlight) === null || _b === void 0 ? void 0 : _b.filteredTypes) === null || _c === void 0 ? void 0 : _c.includes(FilteredType.Category))
250
259
  ? gridContext.highlight
251
260
  : undefined }, customRenderer !== undefined && (React.createElement(CustomCategoryContent, { renderer: customRenderer, categoryItem: node, gridContext: gridContext, onHeightChanged: onHeightChanged })))));
252
261
  case FlatGridItemType.Array:
@@ -255,20 +264,21 @@ const FlatGridItemNode = React.memo(({ index, style: virtualizedListStyle }) =>
255
264
  const selectionKey = node.selectionKey;
256
265
  const parentCategoryItem = gridModel.getItem(node.parentCategorySelectionKey);
257
266
  return (React.createElement(FlatItemNestedBorderWrapper, { borderCount: parentCategoryItem.depth + 1, bottomBorderCount: lastInNumberOfCategories, className: "virtualized-grid-node-content" },
258
- React.createElement(FlatPropertyRenderer, { key: node.key, uniqueKey: selectionKey, propertyRecord: node.derivedRecord, orientation: gridContext.orientation, indentation: node.depth, width: gridContext.gridWidth, isHoverable: gridContext.isPropertyHoverEnabled, isSelectable: gridContext.isPropertySelectionEnabled, isSelected: selectionKey === gridContext.selectedPropertyKey, onClick: node.type === FlatGridItemType.Primitive
259
- ? gridContext.onPropertyClicked
260
- : undefined, onRightClick: node.type === FlatGridItemType.Primitive
261
- ? gridContext.onPropertyRightClicked
262
- : undefined, onContextMenu: gridContext.onPropertyContextMenu, category: parentCategoryItem.derivedCategory, isEditing: selectionKey === gridContext.editingPropertyKey, onEditCommit: gridContext.onEditCommit, onEditCancel: gridContext.onEditCancel, isExpanded: node.isExpanded, onExpansionToggled: onExpansionToggled, onHeightChanged: onHeightChanged, actionButtonRenderers: gridContext.actionButtonRenderers, propertyValueRendererManager: gridContext.propertyValueRendererManager, columnRatio: gridContext.columnRatio, columnInfo: gridContext.columnInfo, isResizeHandleBeingDragged: gridContext.isResizeHandleBeingDragged, isResizeHandleHovered: gridContext.isResizeHandleHovered, onColumnRatioChanged: gridContext.onColumnRatioChanged, onResizeHandleDragChanged: gridContext.onResizeHandleDragChanged, onResizeHandleHoverChanged: gridContext.onResizeHandleHoverChanged, highlight: gridContext.highlight
267
+ React.createElement(FlatPropertyRenderer, { key: node.key, uniqueKey: selectionKey, propertyRecord: node.derivedRecord, orientation: gridContext.orientation, indentation: node.depth, width: gridContext.gridWidth, isHoverable: gridContext.isPropertyHoverEnabled, isSelectable: gridContext.isPropertySelectionEnabled, isSelected: selectionKey === gridContext.selectedPropertyKey, onClick: gridContext.onPropertyClicked, onRightClick: gridContext.onPropertyRightClicked, onContextMenu: gridContext.onPropertyContextMenu, category: parentCategoryItem.derivedCategory, isEditing: selectionKey === gridContext.editingPropertyKey, onEditCommit: gridContext.onEditCommit, onEditCancel: gridContext.onEditCancel, isExpanded: node.isExpanded, onExpansionToggled: onExpansionToggled, onHeightChanged: onHeightChanged, actionButtonRenderers: gridContext.actionButtonRenderers, propertyValueRendererManager: gridContext.propertyValueRendererManager, columnRatio: gridContext.columnRatio, columnInfo: gridContext.columnInfo, isResizeHandleBeingDragged: gridContext.isResizeHandleBeingDragged, isResizeHandleHovered: gridContext.isResizeHandleHovered, onColumnRatioChanged: gridContext.onColumnRatioChanged, onResizeHandleDragChanged: gridContext.onResizeHandleDragChanged, onResizeHandleHoverChanged: gridContext.onResizeHandleHoverChanged, highlight: gridContext.highlight
263
268
  ? {
264
- applyOnLabel: gridContext.highlight.filteredTypes?.includes(FilteredType.Label) ?? false,
265
- applyOnValue: gridContext.highlight.filteredTypes?.includes(FilteredType.Value) ?? false,
269
+ applyOnLabel: (_e = (_d = gridContext.highlight.filteredTypes) === null || _d === void 0 ? void 0 : _d.includes(FilteredType.Label)) !== null && _e !== void 0 ? _e : false,
270
+ applyOnValue: (_g = (_f = gridContext.highlight.filteredTypes) === null || _f === void 0 ? void 0 : _f.includes(FilteredType.Value)) !== null && _g !== void 0 ? _g : false,
266
271
  ...gridContext.highlight,
267
272
  }
268
273
  : undefined })));
269
274
  }
270
275
  }
271
- return (React.createElement("div", { className: "virtualized-grid-node", style: virtualizedListStyle }, getDisplayNode()));
276
+ return (React.createElement("div", { className: "virtualized-grid-node", style: virtualizedListStyle },
277
+ React.createElement("div", { className: "virtualized-grid-node-content-wrapper", style: {
278
+ minHeight: `${minHeight}px`,
279
+ display: "grid",
280
+ } },
281
+ React.createElement("div", { ref: divRef, className: "virtualized-grid-node-content-wrapper-item" }, getDisplayNode()))));
272
282
  }, areEqual);
273
283
  FlatGridItemNode.displayName = "FlatGridItemNode";
274
284
  const CustomCategoryContent = (props) => {
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedPropertyGrid.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/component/VirtualizedPropertyGrid.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\n/** @packageDocumentation\n * @module PropertyGrid\n */\nimport \"./VirtualizedPropertyGrid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RatioChangeResult } from \"@itwin/core-react\";\nimport { Orientation } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../common/UseContextWithMandatoryProvider\";\nimport type { PropertyUpdatedArgs } from \"../../editors/EditorContainer\";\nimport type { ActionButtonRenderer } from \"../../properties/renderers/ActionButtonRenderer\";\nimport type { PropertyGridColumnInfo } from \"../../properties/renderers/PropertyGridColumns\";\nimport type { PropertyValueRendererManager } from \"../../properties/ValueRendererManager\";\nimport { FilteredType } from \"../dataproviders/filterers/PropertyDataFiltererBase\";\nimport type {\n FlatGridItem,\n GridCategoryItem,\n} from \"../internal/flat-items/FlatGridItem\";\nimport { MutableCategorizedPrimitiveProperty } from \"../internal/flat-items/MutableCategorizedPrimitiveProperty\";\nimport { MutableCustomGridCategory } from \"../internal/flat-items/MutableCustomGridCategory\";\nimport { FlatGridItemType } from \"../internal/flat-items/MutableFlatGridItem\";\nimport { MutableGridCategory } from \"../internal/flat-items/MutableGridCategory\";\nimport { FlatPropertyRenderer } from \"../internal/flat-properties/FlatPropertyRenderer\";\nimport type { IPropertyGridEventHandler } from \"../internal/PropertyGridEventHandler\";\nimport type { IPropertyGridModel } from \"../internal/PropertyGridModel\";\nimport type { PropertyCategoryRendererProps } from \"../PropertyCategoryRendererManager\";\nimport { PropertyCategoryRendererManager } from \"../PropertyCategoryRendererManager\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n} from \"../PropertyDataProvider\";\nimport { ColumnResizingPropertyListPropsSupplier } from \"./ColumnResizingPropertyListPropsSupplier\";\nimport { FlatItemNestedBorderWrapper } from \"./FlatItemNestedBorderWrapper\";\nimport { PropertyCategoryBlock } from \"./PropertyCategoryBlock\";\nimport type {\n CommonPropertyGridProps,\n PropertyGridContentHighlightProps,\n} from \"./PropertyGridCommons\";\nimport { PropertyGridCommons } from \"./PropertyGridCommons\";\nimport { PropertyGridEventsRelatedPropsSupplier } from \"./PropertyGridEventsRelatedPropsSupplier\";\nimport { useElementsScrollStorage } from \"../../common/UseElementsScrollStorage\";\n\n/** Properties for [[VirtualizedPropertyGrid]] React component\n * @public\n */\nexport interface VirtualizedPropertyGridProps extends CommonPropertyGridProps {\n /** Property grid view model that defines what needs to be rendered */\n model: IPropertyGridModel;\n /** Handler of the events raised from the property grid */\n eventHandler: IPropertyGridEventHandler;\n /** Property data provider used by the property grid */\n dataProvider: IPropertyDataProvider;\n /** Properties for highlighting property data in the grid. */\n highlight?: PropertyGridContentHighlightProps;\n /** Custom property category renderer manager. Defaults to [[PropertyCategoryRendererManager.defaultManager]]. */\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n /** Width of the property grid component. */\n width: number;\n /** Height of the property grid component. */\n height: number;\n}\n\n/** State of [[VirtualizedPropertyGrid]] React component\n * @internal\n */\ninterface VirtualizedPropertyGridState {\n /** List of PropertyGrid categories */\n gridItems: FlatGridItem[];\n /** Actual orientation used by the property grid */\n orientation: Orientation;\n /** Keeps record of dynamic node heights */\n dynamicNodeHeights: Map<string, number>;\n /** When resetting node height cache, marks the point at which heights have become stale */\n resetIndex: number;\n}\n\n/**\n * Context of [[VirtualizedPropertyGrid]] component.\n * @internal\n */\nexport interface PropertyGridInternalContext {\n gridItems: FlatGridItem[];\n gridEventHandler: IPropertyGridEventHandler;\n gridModel: IPropertyGridModel;\n\n style?: React.CSSProperties;\n className?: string;\n gridContext: VirtualizedPropertyGridContext;\n onItemHeightChanged: (index: number, key: string, height: number) => void;\n}\n\n/**\n * Context of the surrounding [VirtualizedPropertyGrid]($components-react) component.\n * @public\n */\nexport interface VirtualizedPropertyGridContext {\n orientation: Orientation;\n gridWidth: number;\n\n isPropertyHoverEnabled: boolean;\n isPropertySelectionEnabled: boolean;\n selectedPropertyKey?: string;\n\n onPropertyClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyRightClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyContextMenu?: (\n property: PropertyRecord,\n e: React.MouseEvent\n ) => void;\n\n editingPropertyKey?: string;\n onEditCommit?: (\n args: PropertyUpdatedArgs,\n category: PropertyCategory\n ) => void;\n onEditCancel?: () => void;\n\n eventHandler: IPropertyGridEventHandler;\n dataProvider: IPropertyDataProvider;\n\n actionButtonRenderers?: ActionButtonRenderer[];\n propertyValueRendererManager?: PropertyValueRendererManager;\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n\n columnRatio: number;\n columnInfo: PropertyGridColumnInfo;\n isResizeHandleBeingDragged: boolean;\n isResizeHandleHovered: boolean;\n onColumnRatioChanged: (ratio: number) => void | RatioChangeResult;\n onResizeHandleDragChanged: (newValue: boolean) => void;\n onResizeHandleHoverChanged: (newValue: boolean) => void;\n\n highlight?: PropertyGridContentHighlightProps;\n}\n\nconst [\n PropertyGridInternalContextProvider,\n _PropertyGridInternalContextConsumer,\n usePropertyGridInternalContext,\n] = createContextWithMandatoryProvider<PropertyGridInternalContext>(\n \"PropertyGridInternalContext\"\n);\n\nconst ACTION_BUTTON_DEFAULT_WIDTH = 90;\n\n/**\n * VirtualizedPropertyGrid React component.\n * @public\n */\nexport class VirtualizedPropertyGrid extends React.Component<\n VirtualizedPropertyGridProps,\n VirtualizedPropertyGridState\n> {\n private _listRef = React.createRef<VariableSizeList>();\n\n /** @internal */\n constructor(props: VirtualizedPropertyGridProps) {\n super(props);\n this.state = {\n gridItems: [],\n orientation:\n props.orientation ??\n PropertyGridCommons.getCurrentOrientation(\n props.width,\n undefined,\n props.isOrientationFixed,\n props.horizontalOrientationMinWidth\n ),\n dynamicNodeHeights: new Map(),\n resetIndex: 0,\n };\n }\n\n /** @internal */\n public override componentDidUpdate(\n prevProps: VirtualizedPropertyGridProps,\n prevState: VirtualizedPropertyGridState\n ) {\n if (\n this.props.orientation !== prevProps.orientation ||\n this.props.isOrientationFixed !== prevProps.isOrientationFixed ||\n this.props.horizontalOrientationMinWidth !==\n prevProps.horizontalOrientationMinWidth ||\n this.props.width !== prevProps.width\n )\n this.updateOrientation(this.props.width);\n\n if (this.props.model !== prevProps.model) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n\n if (\n this.props.highlight !== prevProps.highlight &&\n this.props.highlight?.activeHighlight &&\n this.state.gridItems.length !== 0\n ) {\n let index = 0;\n let foundMatchingItem = false;\n for (const item of this.state.gridItems) {\n if (\n (item instanceof MutableCategorizedPrimitiveProperty &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.derivedRecord.property.name) ||\n (item instanceof MutableGridCategory &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.name)\n ) {\n foundMatchingItem = true;\n break;\n }\n index++;\n }\n if (foundMatchingItem) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.scrollToItem(index);\n }\n }\n\n if (this.state.dynamicNodeHeights !== prevState.dynamicNodeHeights) {\n // istanbul ignore else\n if (this._listRef.current)\n this._listRef.current.resetAfterIndex(this.state.resetIndex);\n }\n }\n\n /** @internal */\n public static getDerivedStateFromProps(\n props: VirtualizedPropertyGridProps,\n state: VirtualizedPropertyGridState\n ): VirtualizedPropertyGridState | null {\n return {\n ...state,\n gridItems: props.model.getVisibleFlatGrid(),\n };\n }\n\n private updateOrientation(width: number) {\n const { orientation, isOrientationFixed, horizontalOrientationMinWidth } = {\n ...this.props,\n };\n const currentOrientation = PropertyGridCommons.getCurrentOrientation(\n width,\n orientation,\n isOrientationFixed,\n horizontalOrientationMinWidth\n );\n\n if (currentOrientation !== this.state.orientation) {\n this.setState({ orientation: currentOrientation });\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n }\n\n /**\n * Calculate given node height depending on it's type, position in category, parent category depth and current orientation.\n * @param node FlatGridItem node for which to calculate height\n * @returns current height of node.\n */\n private calculateNodeHeight(node: FlatGridItem) {\n const categoryHeaderHeight = 38;\n const categoryHeaderPadding = 4;\n const categoryPropertyHeight = 27;\n const bottomBorderPadding = 5;\n const verticalPrimitivePropertyHeight = 55;\n\n return (\n getPropertyHeight(this.state) +\n node.lastInNumberOfCategories * bottomBorderPadding\n );\n\n function getPropertyHeight(state: VirtualizedPropertyGridState) {\n const dynamicHeight = state.dynamicNodeHeights.get(node.key);\n if (dynamicHeight !== undefined) {\n if (node instanceof MutableCustomGridCategory) {\n return (\n categoryHeaderHeight +\n categoryHeaderPadding +\n (node.isExpanded ? dynamicHeight + bottomBorderPadding : 0)\n );\n }\n\n return (\n dynamicHeight + (state.orientation === Orientation.Vertical ? 28 : 0)\n );\n }\n\n if (node.type === FlatGridItemType.Category) {\n return categoryHeaderHeight + categoryHeaderPadding;\n }\n\n if (\n state.orientation === Orientation.Vertical &&\n node.type === FlatGridItemType.Primitive\n ) {\n return verticalPrimitivePropertyHeight;\n }\n\n return categoryPropertyHeight;\n }\n }\n\n private _handleNodeHeightChange = (\n index: number,\n key: string,\n newHeight: number\n ) => {\n if (this.state.dynamicNodeHeights.get(key) === newHeight) {\n return;\n }\n\n this.setState((state) => {\n return {\n ...state,\n dynamicNodeHeights: new Map(state.dynamicNodeHeights).set(\n key,\n newHeight\n ),\n resetIndex: index,\n };\n });\n };\n\n private _calculateNodeHeightByIndex = (index: number) => {\n const node = this.state.gridItems[index];\n return this.calculateNodeHeight(node);\n };\n\n private calculateEstimatedHeight() {\n let sum = 0;\n for (const node of this.state.gridItems)\n sum += this.calculateNodeHeight(node);\n\n return Math.ceil(sum / this.state.gridItems.length);\n }\n\n private _getNodeKey = (index: number) => {\n const node = this.state.gridItems[index];\n return node.key;\n };\n\n private _getMaxItemDepth = () => {\n let depth = 0;\n for (const item of this.state.gridItems) {\n if (depth < item.depth) {\n depth = item.depth;\n }\n }\n return depth + 1;\n };\n\n /** @internal */\n public override render() {\n const defaultActionButtonWidth =\n (this.props.actionButtonRenderers?.length ?? 0) > 0\n ? ACTION_BUTTON_DEFAULT_WIDTH\n : undefined;\n\n return (\n <ColumnResizingPropertyListPropsSupplier\n orientation={this.state.orientation}\n width={this.props.width}\n minLabelWidth={this.props.minLabelWidth}\n minValueWidth={this.props.minValueWidth}\n actionButtonWidth={\n this.props.actionButtonWidth !== undefined\n ? this.props.actionButtonWidth\n : defaultActionButtonWidth\n }\n maxPropertyDepth={this._getMaxItemDepth()}\n >\n {(columnResizeContext) => (\n <PropertyGridEventsRelatedPropsSupplier\n isPropertySelectionEnabled={\n this.props.isPropertySelectionEnabled ?? false\n }\n isPropertySelectionOnRightClickEnabled={\n this.props.isPropertySelectionOnRightClickEnabled\n }\n isPropertyEditingEnabled={this.props.isPropertyEditingEnabled}\n onPropertyContextMenu={this.props.onPropertyContextMenu}\n onPropertyUpdated={this.props.onPropertyUpdated}\n onPropertySelectionChanged={this.props.onPropertySelectionChanged}\n isPropertyHoverEnabled={this.props.isPropertyHoverEnabled ?? false}\n >\n {(selectionContext) => {\n const gridContext: VirtualizedPropertyGridContext = {\n orientation: columnResizeContext.orientation,\n gridWidth: this.props.width,\n\n isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,\n isPropertySelectionEnabled:\n selectionContext.isPropertySelectionEnabled,\n selectedPropertyKey: selectionContext.selectedPropertyKey,\n\n onPropertyClicked: selectionContext.onPropertyClicked,\n onPropertyRightClicked: selectionContext.onPropertyRightClicked,\n onPropertyContextMenu: selectionContext.onPropertyContextMenu,\n\n editingPropertyKey: selectionContext.editingPropertyKey,\n onEditCommit: selectionContext.onEditCommit,\n onEditCancel: selectionContext.onEditCancel,\n\n eventHandler: this.props.eventHandler,\n dataProvider: this.props.dataProvider,\n\n actionButtonRenderers: this.props.actionButtonRenderers,\n propertyValueRendererManager:\n this.props.propertyValueRendererManager,\n propertyCategoryRendererManager:\n this.props.propertyCategoryRendererManager,\n\n columnRatio: columnResizeContext.columnRatio,\n columnInfo: columnResizeContext.columnInfo,\n isResizeHandleBeingDragged:\n columnResizeContext.isResizeHandleBeingDragged,\n isResizeHandleHovered:\n columnResizeContext.isResizeHandleHovered,\n onColumnRatioChanged: columnResizeContext.onColumnChanged,\n onResizeHandleDragChanged:\n columnResizeContext.onResizeHandleDragChanged,\n onResizeHandleHoverChanged:\n columnResizeContext.onResizeHandleHoverChanged,\n\n highlight: this.props.highlight,\n };\n\n const renderContext: PropertyGridInternalContext = {\n gridItems: this.state.gridItems,\n gridEventHandler: this.props.eventHandler,\n gridModel: this.props.model,\n style: this.props.style,\n className: this.props.className,\n onItemHeightChanged: this._handleNodeHeightChange,\n gridContext,\n };\n\n return (\n <PropertyGridInternalContextProvider value={renderContext}>\n <div\n className={classnames(\n \"components-virtualized-property-grid\",\n \"components-smallEditor-host\"\n )}\n >\n <VariableSizeList\n className={classnames(\n \"components-property-grid-wrapper\",\n \"ReactWindow__VariableSizeList\",\n this.props.className\n )}\n width={this.props.width}\n height={this.props.height}\n itemCount={this.state.gridItems.length}\n itemSize={this._calculateNodeHeightByIndex}\n estimatedItemSize={this.calculateEstimatedHeight()}\n overscanCount={10}\n layout=\"vertical\"\n style={this.props.style}\n itemKey={this._getNodeKey}\n ref={this._listRef}\n >\n {FlatGridItemNode}\n </VariableSizeList>\n </div>\n </PropertyGridInternalContextProvider>\n );\n }}\n </PropertyGridEventsRelatedPropsSupplier>\n )}\n </ColumnResizingPropertyListPropsSupplier>\n );\n }\n}\n\n/**\n * Returns callbacks for persisting and restoring [[VirtualizedPropertyGrid]] layout state.\n * Returned `ref` should be set on container containing [[VirtualizedPropertyGrid]].\n * @public\n */\nexport function useVirtualizedPropertyGridLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nconst FlatGridItemNode = React.memo(\n ({ index, style: virtualizedListStyle }: ListChildComponentProps) => {\n const {\n gridItems,\n gridEventHandler,\n gridModel,\n gridContext,\n className,\n style,\n onItemHeightChanged,\n } = usePropertyGridInternalContext(FlatGridItemNode);\n const node = gridItems[index];\n\n const onExpansionToggled = React.useCallback(\n () => gridEventHandler.onExpansionToggled(node.selectionKey),\n [gridEventHandler, node.selectionKey]\n );\n const onHeightChanged = React.useCallback(\n (newHeight: number) => onItemHeightChanged(index, node.key, newHeight),\n [onItemHeightChanged, index, node.key]\n );\n\n function getDisplayNode() {\n const lastInNumberOfCategories = node.lastInNumberOfCategories;\n switch (node.type) {\n case FlatGridItemType.Category:\n const categoryRendererManager =\n gridContext.propertyCategoryRendererManager ??\n PropertyCategoryRendererManager.defaultManager;\n const customRenderer =\n categoryRendererManager.getCategoryComponent(node);\n const wrapperClassName = classnames(\n \"virtualized-grid-node-content\",\n customRenderer !== undefined\n ? \"virtualized-grid-node-custom-category\"\n : \"virtualized-grid-node-category\"\n );\n return (\n <FlatItemNestedBorderWrapper\n borderCount={node.depth}\n bottomBorderCount={lastInNumberOfCategories}\n className={wrapperClassName}\n >\n <PropertyCategoryBlock\n className={className}\n style={style}\n category={node.derivedCategory}\n onExpansionToggled={onExpansionToggled}\n highlight={\n gridContext.highlight?.filteredTypes?.includes(\n FilteredType.Category\n )\n ? gridContext.highlight\n : undefined\n }\n >\n {customRenderer !== undefined && (\n <CustomCategoryContent\n renderer={customRenderer}\n categoryItem={node}\n gridContext={gridContext}\n onHeightChanged={onHeightChanged}\n />\n )}\n </PropertyCategoryBlock>\n </FlatItemNestedBorderWrapper>\n );\n case FlatGridItemType.Array:\n case FlatGridItemType.Struct:\n case FlatGridItemType.Primitive:\n const selectionKey = node.selectionKey;\n const parentCategoryItem = gridModel.getItem(\n node.parentCategorySelectionKey\n ) as GridCategoryItem;\n\n return (\n <FlatItemNestedBorderWrapper\n borderCount={parentCategoryItem.depth + 1}\n bottomBorderCount={lastInNumberOfCategories}\n className=\"virtualized-grid-node-content\"\n >\n <FlatPropertyRenderer\n key={node.key}\n uniqueKey={selectionKey}\n propertyRecord={node.derivedRecord}\n orientation={gridContext.orientation}\n indentation={node.depth}\n width={gridContext.gridWidth}\n isHoverable={gridContext.isPropertyHoverEnabled}\n isSelectable={gridContext.isPropertySelectionEnabled}\n isSelected={selectionKey === gridContext.selectedPropertyKey}\n onClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyClicked\n : undefined\n }\n onRightClick={\n node.type === FlatGridItemType.Primitive\n ? gridContext.onPropertyRightClicked\n : undefined\n }\n onContextMenu={gridContext.onPropertyContextMenu}\n category={parentCategoryItem.derivedCategory}\n isEditing={selectionKey === gridContext.editingPropertyKey}\n onEditCommit={gridContext.onEditCommit}\n onEditCancel={gridContext.onEditCancel}\n isExpanded={node.isExpanded}\n onExpansionToggled={onExpansionToggled}\n onHeightChanged={onHeightChanged}\n actionButtonRenderers={gridContext.actionButtonRenderers}\n propertyValueRendererManager={\n gridContext.propertyValueRendererManager\n }\n columnRatio={gridContext.columnRatio}\n columnInfo={gridContext.columnInfo}\n isResizeHandleBeingDragged={\n gridContext.isResizeHandleBeingDragged\n }\n isResizeHandleHovered={gridContext.isResizeHandleHovered}\n onColumnRatioChanged={gridContext.onColumnRatioChanged}\n onResizeHandleDragChanged={\n gridContext.onResizeHandleDragChanged\n }\n onResizeHandleHoverChanged={\n gridContext.onResizeHandleHoverChanged\n }\n highlight={\n gridContext.highlight\n ? {\n applyOnLabel:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Label\n ) ?? false,\n applyOnValue:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Value\n ) ?? false,\n ...gridContext.highlight,\n }\n : undefined\n }\n />\n </FlatItemNestedBorderWrapper>\n );\n }\n }\n\n return (\n <div className=\"virtualized-grid-node\" style={virtualizedListStyle}>\n {getDisplayNode()}\n </div>\n );\n },\n areEqual\n);\n\nFlatGridItemNode.displayName = \"FlatGridItemNode\";\n\ninterface CustomCategoryContentProps {\n categoryItem: GridCategoryItem;\n renderer: React.ComponentType<PropertyCategoryRendererProps>;\n gridContext: VirtualizedPropertyGridContext;\n onHeightChanged: (newHeight: number) => void;\n}\n\nconst CustomCategoryContent: React.FC<CustomCategoryContentProps> = (props) => {\n const { onHeightChanged } = props;\n const divRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n assert(divRef.current !== null);\n const contentHeight = divRef.current.getBoundingClientRect().height;\n onHeightChanged(contentHeight);\n }, [props.gridContext.orientation, onHeightChanged]);\n\n return <div ref={divRef}>{React.createElement(props.renderer, props)}</div>;\n};\n"]}
1
+ {"version":3,"file":"VirtualizedPropertyGrid.js","sourceRoot":"","sources":["../../../../../src/components-react/propertygrid/component/VirtualizedPropertyGrid.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\n/** @packageDocumentation\n * @module PropertyGrid\n */\nimport \"./VirtualizedPropertyGrid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ListChildComponentProps } from \"react-window\";\nimport { areEqual, VariableSizeList } from \"react-window\";\nimport type { PropertyRecord } from \"@itwin/appui-abstract\";\nimport { assert } from \"@itwin/core-bentley\";\nimport type { RatioChangeResult } from \"@itwin/core-react\";\nimport { Orientation } from \"@itwin/core-react\";\nimport { createContextWithMandatoryProvider } from \"../../common/UseContextWithMandatoryProvider\";\nimport type { PropertyUpdatedArgs } from \"../../editors/EditorContainer\";\nimport type { ActionButtonRenderer } from \"../../properties/renderers/ActionButtonRenderer\";\nimport type { PropertyGridColumnInfo } from \"../../properties/renderers/PropertyGridColumns\";\nimport type { PropertyValueRendererManager } from \"../../properties/ValueRendererManager\";\nimport { FilteredType } from \"../dataproviders/filterers/PropertyDataFiltererBase\";\nimport type {\n FlatGridItem,\n GridCategoryItem,\n} from \"../internal/flat-items/FlatGridItem\";\nimport { MutableCategorizedPrimitiveProperty } from \"../internal/flat-items/MutableCategorizedPrimitiveProperty\";\nimport { MutableCustomGridCategory } from \"../internal/flat-items/MutableCustomGridCategory\";\nimport { FlatGridItemType } from \"../internal/flat-items/MutableFlatGridItem\";\nimport { MutableGridCategory } from \"../internal/flat-items/MutableGridCategory\";\nimport { FlatPropertyRenderer } from \"../internal/flat-properties/FlatPropertyRenderer\";\nimport type { IPropertyGridEventHandler } from \"../internal/PropertyGridEventHandler\";\nimport type { IPropertyGridModel } from \"../internal/PropertyGridModel\";\nimport type { PropertyCategoryRendererProps } from \"../PropertyCategoryRendererManager\";\nimport { PropertyCategoryRendererManager } from \"../PropertyCategoryRendererManager\";\nimport type {\n IPropertyDataProvider,\n PropertyCategory,\n} from \"../PropertyDataProvider\";\nimport { ColumnResizingPropertyListPropsSupplier } from \"./ColumnResizingPropertyListPropsSupplier\";\nimport { FlatItemNestedBorderWrapper } from \"./FlatItemNestedBorderWrapper\";\nimport { PropertyCategoryBlock } from \"./PropertyCategoryBlock\";\nimport type {\n CommonPropertyGridProps,\n PropertyGridContentHighlightProps,\n} from \"./PropertyGridCommons\";\nimport { PropertyGridCommons } from \"./PropertyGridCommons\";\nimport { PropertyGridEventsRelatedPropsSupplier } from \"./PropertyGridEventsRelatedPropsSupplier\";\nimport { useElementsScrollStorage } from \"../../common/UseElementsScrollStorage\";\n\n/** Properties for [[VirtualizedPropertyGrid]] React component\n * @public\n */\nexport interface VirtualizedPropertyGridProps extends CommonPropertyGridProps {\n /** Property grid view model that defines what needs to be rendered */\n model: IPropertyGridModel;\n /** Handler of the events raised from the property grid */\n eventHandler: IPropertyGridEventHandler;\n /** Property data provider used by the property grid */\n dataProvider: IPropertyDataProvider;\n /** Properties for highlighting property data in the grid. */\n highlight?: PropertyGridContentHighlightProps;\n /** Custom property category renderer manager. Defaults to [[PropertyCategoryRendererManager.defaultManager]]. */\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n /** Width of the property grid component. */\n width: number;\n /** Height of the property grid component. */\n height: number;\n}\n\n/** State of [[VirtualizedPropertyGrid]] React component\n * @internal\n */\ninterface VirtualizedPropertyGridState {\n /** List of PropertyGrid categories */\n gridItems: FlatGridItem[];\n /** Actual orientation used by the property grid */\n orientation: Orientation;\n /** Keeps record of dynamic node heights */\n dynamicNodeHeights: Map<string, number>;\n}\n\n/**\n * Context of [[VirtualizedPropertyGrid]] component.\n * @internal\n */\nexport interface PropertyGridInternalContext {\n gridItems: FlatGridItem[];\n gridEventHandler: IPropertyGridEventHandler;\n gridModel: IPropertyGridModel;\n\n style?: React.CSSProperties;\n className?: string;\n gridContext: VirtualizedPropertyGridContext;\n onItemHeightChanged: (index: number, key: string, height: number) => void;\n}\n\n/**\n * Context of the surrounding [VirtualizedPropertyGrid]($components-react) component.\n * @public\n */\nexport interface VirtualizedPropertyGridContext {\n orientation: Orientation;\n gridWidth: number;\n\n isPropertyHoverEnabled: boolean;\n isPropertySelectionEnabled: boolean;\n selectedPropertyKey?: string;\n\n onPropertyClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyRightClicked?: (property: PropertyRecord, key?: string) => void;\n onPropertyContextMenu?: (\n property: PropertyRecord,\n e: React.MouseEvent\n ) => void;\n\n editingPropertyKey?: string;\n onEditCommit?: (\n args: PropertyUpdatedArgs,\n category: PropertyCategory\n ) => void;\n onEditCancel?: () => void;\n\n eventHandler: IPropertyGridEventHandler;\n dataProvider: IPropertyDataProvider;\n\n actionButtonRenderers?: ActionButtonRenderer[];\n propertyValueRendererManager?: PropertyValueRendererManager;\n propertyCategoryRendererManager?: PropertyCategoryRendererManager;\n\n columnRatio: number;\n columnInfo: PropertyGridColumnInfo;\n isResizeHandleBeingDragged: boolean;\n isResizeHandleHovered: boolean;\n onColumnRatioChanged: (ratio: number) => void | RatioChangeResult;\n onResizeHandleDragChanged: (newValue: boolean) => void;\n onResizeHandleHoverChanged: (newValue: boolean) => void;\n\n highlight?: PropertyGridContentHighlightProps;\n}\n\nconst [\n PropertyGridInternalContextProvider,\n _PropertyGridInternalContextConsumer,\n usePropertyGridInternalContext,\n] = createContextWithMandatoryProvider<PropertyGridInternalContext>(\n \"PropertyGridInternalContext\"\n);\n\nconst ACTION_BUTTON_DEFAULT_WIDTH = 90;\nconst CATEGORY_HEADER_HEIGHT = 42;\nconst CATEGORY_PROPERTY_HEIGHT = 28;\nconst VERTICAL_CATEGORY_PROPERTY_HEIGHT = 48;\n\n/**\n * VirtualizedPropertyGrid React component.\n * @public\n */\nexport class VirtualizedPropertyGrid extends React.Component<\n VirtualizedPropertyGridProps,\n VirtualizedPropertyGridState\n> {\n private _listRef = React.createRef<VariableSizeList>();\n\n /** @internal */\n constructor(props: VirtualizedPropertyGridProps) {\n super(props);\n this.state = {\n gridItems: [],\n orientation:\n props.orientation ??\n PropertyGridCommons.getCurrentOrientation(\n props.width,\n undefined,\n props.isOrientationFixed,\n props.horizontalOrientationMinWidth\n ),\n dynamicNodeHeights: new Map(),\n };\n }\n\n /** @internal */\n public override componentDidUpdate(prevProps: VirtualizedPropertyGridProps) {\n if (\n this.props.orientation !== prevProps.orientation ||\n this.props.isOrientationFixed !== prevProps.isOrientationFixed ||\n this.props.horizontalOrientationMinWidth !==\n prevProps.horizontalOrientationMinWidth ||\n this.props.width !== prevProps.width\n )\n this.updateOrientation(this.props.width);\n\n if (this.props.model !== prevProps.model) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.resetAfterIndex(0);\n }\n\n if (\n this.props.highlight !== prevProps.highlight &&\n this.props.highlight?.activeHighlight &&\n this.state.gridItems.length !== 0\n ) {\n let index = 0;\n let foundMatchingItem = false;\n for (const item of this.state.gridItems) {\n if (\n (item instanceof MutableCategorizedPrimitiveProperty &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.derivedRecord.property.name) ||\n (item instanceof MutableGridCategory &&\n this.props.highlight.activeHighlight.highlightedItemIdentifier ===\n item.name)\n ) {\n foundMatchingItem = true;\n break;\n }\n index++;\n }\n if (foundMatchingItem) {\n // istanbul ignore else\n if (this._listRef.current) this._listRef.current.scrollToItem(index);\n }\n }\n }\n\n /** @internal */\n public static getDerivedStateFromProps(\n props: VirtualizedPropertyGridProps,\n state: VirtualizedPropertyGridState\n ): VirtualizedPropertyGridState | null {\n return {\n ...state,\n gridItems: props.model.getVisibleFlatGrid(),\n };\n }\n\n private updateOrientation(width: number) {\n const { orientation, isOrientationFixed, horizontalOrientationMinWidth } = {\n ...this.props,\n };\n const currentOrientation = PropertyGridCommons.getCurrentOrientation(\n width,\n orientation,\n isOrientationFixed,\n horizontalOrientationMinWidth\n );\n\n if (currentOrientation !== this.state.orientation) {\n this.setState({ orientation: currentOrientation });\n }\n }\n\n /**\n * Calculate given node height depending on it's type, position in category, parent category depth and current orientation.\n * @param node FlatGridItem node for which to calculate height\n * @returns current height of node.\n */\n private calculateNodeHeight(node: FlatGridItem) {\n const bottomBorderPadding = 5;\n\n return (\n getPropertyHeight(this.state) +\n node.lastInNumberOfCategories * bottomBorderPadding\n );\n\n function getPropertyHeight(state: VirtualizedPropertyGridState) {\n const dynamicHeight = state.dynamicNodeHeights.get(node.key);\n if (dynamicHeight !== undefined) {\n if (node instanceof MutableCustomGridCategory) {\n return (\n CATEGORY_HEADER_HEIGHT +\n (node.isExpanded ? dynamicHeight + bottomBorderPadding : 0)\n );\n }\n\n return dynamicHeight;\n }\n\n if (node.type === FlatGridItemType.Category) {\n return CATEGORY_HEADER_HEIGHT;\n }\n\n return state.orientation === Orientation.Vertical\n ? VERTICAL_CATEGORY_PROPERTY_HEIGHT\n : CATEGORY_PROPERTY_HEIGHT;\n }\n }\n\n private _handleNodeHeightChange = (\n index: number,\n key: string,\n newHeight: number\n ) => {\n if (this.state.dynamicNodeHeights.get(key) === newHeight) {\n return;\n }\n\n this.setState(\n (state) => {\n return {\n ...state,\n dynamicNodeHeights: new Map(state.dynamicNodeHeights).set(\n key,\n newHeight\n ),\n };\n },\n () => this._listRef.current!.resetAfterIndex(index)\n );\n };\n\n private _calculateNodeHeightByIndex = (index: number) => {\n const node = this.state.gridItems[index];\n return this.calculateNodeHeight(node);\n };\n\n private calculateEstimatedHeight() {\n let sum = 0;\n for (const node of this.state.gridItems)\n sum += this.calculateNodeHeight(node);\n\n return Math.ceil(sum / this.state.gridItems.length);\n }\n\n private _getNodeKey = (index: number) => {\n const node = this.state.gridItems[index];\n return node.key;\n };\n\n private _getMaxItemDepth = () => {\n let depth = 0;\n for (const item of this.state.gridItems) {\n if (depth < item.depth) {\n depth = item.depth;\n }\n }\n return depth + 1;\n };\n\n /** @internal */\n public override render() {\n const defaultActionButtonWidth =\n (this.props.actionButtonRenderers?.length ?? 0) > 0\n ? ACTION_BUTTON_DEFAULT_WIDTH\n : undefined;\n\n return (\n <ColumnResizingPropertyListPropsSupplier\n orientation={this.state.orientation}\n width={this.props.width}\n minLabelWidth={this.props.minLabelWidth}\n minValueWidth={this.props.minValueWidth}\n actionButtonWidth={\n this.props.actionButtonWidth !== undefined\n ? this.props.actionButtonWidth\n : defaultActionButtonWidth\n }\n maxPropertyDepth={this._getMaxItemDepth()}\n >\n {(columnResizeContext) => (\n <PropertyGridEventsRelatedPropsSupplier\n isPropertySelectionEnabled={\n this.props.isPropertySelectionEnabled ?? false\n }\n isPropertySelectionOnRightClickEnabled={\n this.props.isPropertySelectionOnRightClickEnabled\n }\n isPropertyEditingEnabled={this.props.isPropertyEditingEnabled}\n onPropertyContextMenu={this.props.onPropertyContextMenu}\n onPropertyUpdated={this.props.onPropertyUpdated}\n onPropertySelectionChanged={this.props.onPropertySelectionChanged}\n isPropertyHoverEnabled={this.props.isPropertyHoverEnabled ?? false}\n >\n {(selectionContext) => {\n const gridContext: VirtualizedPropertyGridContext = {\n orientation: columnResizeContext.orientation,\n gridWidth: this.props.width,\n\n isPropertyHoverEnabled: selectionContext.isPropertyHoverEnabled,\n isPropertySelectionEnabled:\n selectionContext.isPropertySelectionEnabled,\n selectedPropertyKey: selectionContext.selectedPropertyKey,\n\n onPropertyClicked: selectionContext.onPropertyClicked,\n onPropertyRightClicked: selectionContext.onPropertyRightClicked,\n onPropertyContextMenu: selectionContext.onPropertyContextMenu,\n\n editingPropertyKey: selectionContext.editingPropertyKey,\n onEditCommit: selectionContext.onEditCommit,\n onEditCancel: selectionContext.onEditCancel,\n\n eventHandler: this.props.eventHandler,\n dataProvider: this.props.dataProvider,\n\n actionButtonRenderers: this.props.actionButtonRenderers,\n propertyValueRendererManager:\n this.props.propertyValueRendererManager,\n propertyCategoryRendererManager:\n this.props.propertyCategoryRendererManager,\n\n columnRatio: columnResizeContext.columnRatio,\n columnInfo: columnResizeContext.columnInfo,\n isResizeHandleBeingDragged:\n columnResizeContext.isResizeHandleBeingDragged,\n isResizeHandleHovered:\n columnResizeContext.isResizeHandleHovered,\n onColumnRatioChanged: columnResizeContext.onColumnChanged,\n onResizeHandleDragChanged:\n columnResizeContext.onResizeHandleDragChanged,\n onResizeHandleHoverChanged:\n columnResizeContext.onResizeHandleHoverChanged,\n\n highlight: this.props.highlight,\n };\n\n const renderContext: PropertyGridInternalContext = {\n gridItems: this.state.gridItems,\n gridEventHandler: this.props.eventHandler,\n gridModel: this.props.model,\n style: this.props.style,\n className: this.props.className,\n onItemHeightChanged: this._handleNodeHeightChange,\n gridContext,\n };\n\n return (\n <PropertyGridInternalContextProvider value={renderContext}>\n <div\n className={classnames(\n \"components-virtualized-property-grid\",\n \"components-smallEditor-host\"\n )}\n >\n <VariableSizeList\n className={classnames(\n \"components-property-grid-wrapper\",\n \"ReactWindow__VariableSizeList\",\n this.props.className\n )}\n width={this.props.width}\n height={this.props.height}\n itemCount={this.state.gridItems.length}\n itemSize={this._calculateNodeHeightByIndex}\n estimatedItemSize={this.calculateEstimatedHeight()}\n overscanCount={10}\n layout=\"vertical\"\n style={this.props.style}\n itemKey={this._getNodeKey}\n ref={this._listRef}\n >\n {FlatGridItemNode}\n </VariableSizeList>\n </div>\n </PropertyGridInternalContextProvider>\n );\n }}\n </PropertyGridEventsRelatedPropsSupplier>\n )}\n </ColumnResizingPropertyListPropsSupplier>\n );\n }\n}\n\n/**\n * Returns callbacks for persisting and restoring [[VirtualizedPropertyGrid]] layout state.\n * Returned `ref` should be set on container containing [[VirtualizedPropertyGrid]].\n * @public\n */\nexport function useVirtualizedPropertyGridLayoutStorage<T extends Element>() {\n return useElementsScrollStorage<T>(\"ReactWindow__VariableSizeList\");\n}\n\nconst FlatGridItemNode = React.memo(\n ({ index, style: virtualizedListStyle }: ListChildComponentProps) => {\n const {\n gridItems,\n gridEventHandler,\n gridModel,\n gridContext,\n className,\n style,\n onItemHeightChanged,\n } = usePropertyGridInternalContext(FlatGridItemNode);\n const node = gridItems[index];\n const divRef = React.useRef<HTMLDivElement>(null);\n const previousHeightRef = React.useRef(0);\n\n const onExpansionToggled = React.useCallback(\n () => gridEventHandler.onExpansionToggled(node.selectionKey),\n [gridEventHandler, node.selectionKey]\n );\n const onHeightChanged = React.useCallback(\n (newHeight: number) => onItemHeightChanged(index, node.key, newHeight),\n [onItemHeightChanged, index, node.key]\n );\n\n const minHeight = React.useMemo(() => {\n if (node.type === FlatGridItemType.Category)\n return CATEGORY_HEADER_HEIGHT;\n\n return gridContext.orientation === Orientation.Vertical\n ? VERTICAL_CATEGORY_PROPERTY_HEIGHT\n : CATEGORY_PROPERTY_HEIGHT;\n }, [gridContext.orientation, node.type]);\n\n React.useLayoutEffect(() => {\n assert(divRef.current !== null);\n const refHeight = divRef.current.getBoundingClientRect().height;\n const currentHeight = Math.max(refHeight, minHeight);\n\n if (currentHeight !== previousHeightRef.current) {\n onHeightChanged(currentHeight);\n previousHeightRef.current = currentHeight;\n }\n });\n\n function getDisplayNode() {\n const lastInNumberOfCategories = node.lastInNumberOfCategories;\n switch (node.type) {\n case FlatGridItemType.Category:\n const categoryRendererManager =\n gridContext.propertyCategoryRendererManager ??\n PropertyCategoryRendererManager.defaultManager;\n const customRenderer =\n categoryRendererManager.getCategoryComponent(node);\n const wrapperClassName = classnames(\n \"virtualized-grid-node-content\",\n customRenderer !== undefined\n ? \"virtualized-grid-node-custom-category\"\n : \"virtualized-grid-node-category\"\n );\n return (\n <FlatItemNestedBorderWrapper\n borderCount={node.depth}\n bottomBorderCount={lastInNumberOfCategories}\n className={wrapperClassName}\n >\n <PropertyCategoryBlock\n className={className}\n style={style}\n category={node.derivedCategory}\n onExpansionToggled={onExpansionToggled}\n highlight={\n gridContext.highlight?.filteredTypes?.includes(\n FilteredType.Category\n )\n ? gridContext.highlight\n : undefined\n }\n >\n {customRenderer !== undefined && (\n <CustomCategoryContent\n renderer={customRenderer}\n categoryItem={node}\n gridContext={gridContext}\n onHeightChanged={onHeightChanged}\n />\n )}\n </PropertyCategoryBlock>\n </FlatItemNestedBorderWrapper>\n );\n case FlatGridItemType.Array:\n case FlatGridItemType.Struct:\n case FlatGridItemType.Primitive:\n const selectionKey = node.selectionKey;\n const parentCategoryItem = gridModel.getItem(\n node.parentCategorySelectionKey\n ) as GridCategoryItem;\n\n return (\n <FlatItemNestedBorderWrapper\n borderCount={parentCategoryItem.depth + 1}\n bottomBorderCount={lastInNumberOfCategories}\n className=\"virtualized-grid-node-content\"\n >\n <FlatPropertyRenderer\n key={node.key}\n uniqueKey={selectionKey}\n propertyRecord={node.derivedRecord}\n orientation={gridContext.orientation}\n indentation={node.depth}\n width={gridContext.gridWidth}\n isHoverable={gridContext.isPropertyHoverEnabled}\n isSelectable={gridContext.isPropertySelectionEnabled}\n isSelected={selectionKey === gridContext.selectedPropertyKey}\n onClick={gridContext.onPropertyClicked}\n onRightClick={gridContext.onPropertyRightClicked}\n onContextMenu={gridContext.onPropertyContextMenu}\n category={parentCategoryItem.derivedCategory}\n isEditing={selectionKey === gridContext.editingPropertyKey}\n onEditCommit={gridContext.onEditCommit}\n onEditCancel={gridContext.onEditCancel}\n isExpanded={node.isExpanded}\n onExpansionToggled={onExpansionToggled}\n onHeightChanged={onHeightChanged}\n actionButtonRenderers={gridContext.actionButtonRenderers}\n propertyValueRendererManager={\n gridContext.propertyValueRendererManager\n }\n columnRatio={gridContext.columnRatio}\n columnInfo={gridContext.columnInfo}\n isResizeHandleBeingDragged={\n gridContext.isResizeHandleBeingDragged\n }\n isResizeHandleHovered={gridContext.isResizeHandleHovered}\n onColumnRatioChanged={gridContext.onColumnRatioChanged}\n onResizeHandleDragChanged={\n gridContext.onResizeHandleDragChanged\n }\n onResizeHandleHoverChanged={\n gridContext.onResizeHandleHoverChanged\n }\n highlight={\n gridContext.highlight\n ? {\n applyOnLabel:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Label\n ) ?? false,\n applyOnValue:\n gridContext.highlight.filteredTypes?.includes(\n FilteredType.Value\n ) ?? false,\n ...gridContext.highlight,\n }\n : undefined\n }\n />\n </FlatItemNestedBorderWrapper>\n );\n }\n }\n\n return (\n <div className=\"virtualized-grid-node\" style={virtualizedListStyle}>\n <div\n className=\"virtualized-grid-node-content-wrapper\"\n style={{\n minHeight: `${minHeight}px`,\n display: \"grid\",\n }}\n >\n <div\n ref={divRef}\n className=\"virtualized-grid-node-content-wrapper-item\"\n >\n {getDisplayNode()}\n </div>\n </div>\n </div>\n );\n },\n areEqual\n);\n\nFlatGridItemNode.displayName = \"FlatGridItemNode\";\n\ninterface CustomCategoryContentProps {\n categoryItem: GridCategoryItem;\n renderer: React.ComponentType<PropertyCategoryRendererProps>;\n gridContext: VirtualizedPropertyGridContext;\n onHeightChanged: (newHeight: number) => void;\n}\n\nconst CustomCategoryContent: React.FC<CustomCategoryContentProps> = (props) => {\n const { onHeightChanged } = props;\n const divRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n assert(divRef.current !== null);\n const contentHeight = divRef.current.getBoundingClientRect().height;\n onHeightChanged(contentHeight);\n }, [props.gridContext.orientation, onHeightChanged]);\n\n return <div ref={divRef}>{React.createElement(props.renderer, props)}</div>;\n};\n"]}
@@ -80,8 +80,9 @@ export class FilteringPropertyDataProvider {
80
80
  }
81
81
  }
82
82
  async function matchHierarchy(filterer, categories, records, newRecords, parentMatchInfo) {
83
+ var _a, _b, _c, _d, _e;
83
84
  const newCategories = [];
84
- newRecords = newRecords ?? {};
85
+ newRecords = newRecords !== null && newRecords !== void 0 ? newRecords : {};
85
86
  let matchesCount = 0;
86
87
  let allFilteredResultMatches = [];
87
88
  let allFilteredTypes = [];
@@ -90,27 +91,27 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
90
91
  if (matchInfo.matchesFilter) {
91
92
  allFilteredResultMatches.push({
92
93
  id: category.name,
93
- matchesCount: matchInfo.matchesCount ?? 0,
94
+ matchesCount: (_a = matchInfo.matchesCount) !== null && _a !== void 0 ? _a : 0,
94
95
  });
95
- allFilteredTypes = allFilteredTypes.concat(matchInfo.filteredTypes ?? []);
96
- matchesCount += matchInfo.matchesCount ?? 0;
96
+ allFilteredTypes = allFilteredTypes.concat((_b = matchInfo.filteredTypes) !== null && _b !== void 0 ? _b : []);
97
+ matchesCount += (_c = matchInfo.matchesCount) !== null && _c !== void 0 ? _c : 0;
97
98
  }
98
- const childRecords = records[category.name] ?? [];
99
+ const childRecords = (_d = records[category.name]) !== null && _d !== void 0 ? _d : [];
99
100
  const { filteredRecords, matchesCount: count, filteredResultMatches, filteredTypes, } = await matchRecordHierarchy(filterer, childRecords, []);
100
101
  allFilteredResultMatches = allFilteredResultMatches.concat(filteredResultMatches);
101
102
  allFilteredTypes = allFilteredTypes.concat(filteredTypes);
102
103
  matchesCount += count;
103
- const parentInfo = parentMatchInfo?.matchesFilter
104
+ const parentInfo = (parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.matchesFilter)
104
105
  ? parentMatchInfo
105
106
  : matchInfo;
106
- const childCategories = category.childCategories ?? [];
107
+ const childCategories = (_e = category.childCategories) !== null && _e !== void 0 ? _e : [];
107
108
  const { filteredCategories, matchesCount: childCount, filteredResultMatches: childFilteredResultMatches, filteredTypes: childFilteredTypes, } = await matchHierarchy(filterer, childCategories, records, newRecords, parentInfo);
108
109
  allFilteredResultMatches = allFilteredResultMatches.concat(childFilteredResultMatches);
109
110
  allFilteredTypes = allFilteredTypes.concat(childFilteredTypes);
110
111
  matchesCount += childCount;
111
112
  let expand = !(count === 0 && childCount === 0);
112
113
  if (matchInfo.matchesFilter ||
113
- (parentMatchInfo?.matchesFilter &&
114
+ ((parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.matchesFilter) &&
114
115
  parentMatchInfo.shouldForceIncludeDescendants)) {
115
116
  newRecords[category.name] = records[category.name];
116
117
  if (matchInfo.matchesFilter) {
@@ -121,7 +122,7 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
121
122
  }
122
123
  if ((filteredRecords.length !== 0 || filteredCategories.length !== 0) &&
123
124
  !matchInfo.matchesFilter &&
124
- !(parentMatchInfo?.shouldExpandNodeParents &&
125
+ !((parentMatchInfo === null || parentMatchInfo === void 0 ? void 0 : parentMatchInfo.shouldExpandNodeParents) &&
125
126
  parentMatchInfo.matchesFilter)) {
126
127
  const newCategory = copyPropertyCategory(category, filteredCategories, expand);
127
128
  newRecords[newCategory.name] = filteredRecords;
@@ -137,6 +138,7 @@ async function matchHierarchy(filterer, categories, records, newRecords, parentM
137
138
  };
138
139
  }
139
140
  async function matchRecordHierarchy(filterer, records, parents, forceIncludeItem = false) {
141
+ var _a, _b;
140
142
  const newMatchedRecords = [];
141
143
  let expandParent = false; // property passed back to parent to indicate whether it should be expanded
142
144
  let matchesCount = 0;
@@ -153,8 +155,8 @@ async function matchRecordHierarchy(filterer, records, parents, forceIncludeItem
153
155
  expandParent = expandParent || shouldExpandNodeParents;
154
156
  let newRecord;
155
157
  if (matchInfo.matchesFilter) {
156
- filteredTypes = [...filteredTypes, ...(matchInfo.filteredTypes ?? [])];
157
- const recordMatchesCount = matchInfo.matchesCount ?? 0;
158
+ filteredTypes = [...filteredTypes, ...((_a = matchInfo.filteredTypes) !== null && _a !== void 0 ? _a : [])];
159
+ const recordMatchesCount = (_b = matchInfo.matchesCount) !== null && _b !== void 0 ? _b : 0;
158
160
  matchesCount += recordMatchesCount;
159
161
  // Item is included if it matches filter
160
162
  // If at least one matched record from records list needs its parent expanded,