@itwin/grouping-mapping-widget 0.26.0 → 0.27.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 (611) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +115 -115
  3. package/lib/cjs/WidgetShell/GroupingMapping.js +2 -4
  4. package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
  5. package/lib/cjs/WidgetShell/GroupingMappingContent.js +4 -4
  6. package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
  7. package/lib/cjs/WidgetShell/GroupingMappingHeader.d.ts +1 -1
  8. package/lib/cjs/WidgetShell/GroupingMappingHeader.js +5 -5
  9. package/lib/cjs/WidgetShell/GroupingMappingHeader.js.map +1 -1
  10. package/lib/cjs/WidgetShell/GroupingMappingWidget.js +1 -3
  11. package/lib/cjs/WidgetShell/GroupingMappingWidget.js.map +1 -1
  12. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js +29 -23
  13. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  14. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
  15. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
  16. package/lib/cjs/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
  17. package/lib/cjs/common/hooks/useIsMounted.js +3 -3
  18. package/lib/cjs/common/hooks/useIsMounted.js.map +1 -1
  19. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js +3 -3
  20. package/lib/cjs/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  21. package/lib/cjs/common/utils.js +3 -3
  22. package/lib/cjs/common/utils.js.map +1 -1
  23. package/lib/cjs/common/viewerUtils.js +2 -2
  24. package/lib/cjs/common/viewerUtils.js.map +1 -1
  25. package/lib/cjs/components/Constants.js +4 -4
  26. package/lib/cjs/components/Constants.js.map +1 -1
  27. package/lib/cjs/components/GroupingMappingContext.js +13 -4
  28. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  29. package/lib/cjs/components/Groups/Editing/GroupAction.js +7 -9
  30. package/lib/cjs/components/Groups/Editing/GroupAction.js.map +1 -1
  31. package/lib/cjs/components/Groups/Editing/GroupDetails.d.ts +1 -1
  32. package/lib/cjs/components/Groups/Editing/GroupDetails.js +5 -7
  33. package/lib/cjs/components/Groups/Editing/GroupDetails.js.map +1 -1
  34. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  35. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
  36. package/lib/cjs/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  37. package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js +4 -4
  38. package/lib/cjs/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
  39. package/lib/cjs/components/Groups/GroupColorLegend.js +3 -3
  40. package/lib/cjs/components/Groups/GroupColorLegend.js.map +1 -1
  41. package/lib/cjs/components/Groups/GroupListItem.js +3 -4
  42. package/lib/cjs/components/Groups/GroupListItem.js.map +1 -1
  43. package/lib/cjs/components/Groups/GroupListItem.scss +2 -2
  44. package/lib/cjs/components/Groups/GroupMenuActions.js +17 -6
  45. package/lib/cjs/components/Groups/GroupMenuActions.js.map +1 -1
  46. package/lib/cjs/components/Groups/GroupOverlapProgressBar.js.map +1 -1
  47. package/lib/cjs/components/Groups/Groups.js +3 -3
  48. package/lib/cjs/components/Groups/Groups.js.map +1 -1
  49. package/lib/cjs/components/Groups/GroupsAddButton.d.ts +1 -1
  50. package/lib/cjs/components/Groups/GroupsAddButton.js +4 -4
  51. package/lib/cjs/components/Groups/GroupsAddButton.js.map +1 -1
  52. package/lib/cjs/components/Groups/GroupsAddButton.scss +1 -1
  53. package/lib/cjs/components/Groups/GroupsShowHideButtons.d.ts +1 -1
  54. package/lib/cjs/components/Groups/GroupsShowHideButtons.js +2 -2
  55. package/lib/cjs/components/Groups/GroupsShowHideButtons.js.map +1 -1
  56. package/lib/cjs/components/Groups/GroupsView.js +8 -10
  57. package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
  58. package/lib/cjs/components/Groups/GroupsView.scss +1 -1
  59. package/lib/cjs/components/Groups/GroupsVisualization.js +19 -20
  60. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  61. package/lib/cjs/components/Groups/GroupsVisualizationActions.js +4 -4
  62. package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
  63. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
  64. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js +4 -4
  65. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  66. package/lib/cjs/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
  67. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
  68. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  69. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
  70. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
  71. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
  72. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
  73. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  74. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
  75. package/lib/cjs/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
  76. package/lib/cjs/components/Groups/ToggleGroupVisibility.js +3 -3
  77. package/lib/cjs/components/Groups/ToggleGroupVisibility.js.map +1 -1
  78. package/lib/cjs/components/Groups/groupsHelpers.js +8 -4
  79. package/lib/cjs/components/Groups/groupsHelpers.js.map +1 -1
  80. package/lib/cjs/components/Groups/hooks/useFetchGroups.js.map +1 -1
  81. package/lib/cjs/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
  82. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js +5 -5
  83. package/lib/cjs/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  84. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  85. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  86. package/lib/cjs/components/Groups/hooks/useVisualization.js +2 -4
  87. package/lib/cjs/components/Groups/hooks/useVisualization.js.map +1 -1
  88. package/lib/cjs/components/Mappings/BlockingOverlay.js +3 -3
  89. package/lib/cjs/components/Mappings/BlockingOverlay.js.map +1 -1
  90. package/lib/cjs/components/Mappings/Editing/MappingAction.js +11 -15
  91. package/lib/cjs/components/Mappings/Editing/MappingAction.js.map +1 -1
  92. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  93. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  94. package/lib/cjs/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  95. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  96. package/lib/cjs/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  97. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  98. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  99. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  100. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  101. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  102. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  103. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  104. package/lib/cjs/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  105. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  106. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  107. package/lib/cjs/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  108. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  109. package/lib/cjs/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  110. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js +26 -30
  111. package/lib/cjs/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  112. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  113. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  114. package/lib/cjs/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  115. package/lib/cjs/components/Mappings/Import/SelectIModel.d.ts +1 -1
  116. package/lib/cjs/components/Mappings/Import/SelectIModel.js +5 -5
  117. package/lib/cjs/components/Mappings/Import/SelectIModel.js.map +1 -1
  118. package/lib/cjs/components/Mappings/Import/SelectITwin.js +2 -2
  119. package/lib/cjs/components/Mappings/Import/SelectITwin.js.map +1 -1
  120. package/lib/cjs/components/Mappings/Import/SelectITwin.scss +1 -1
  121. package/lib/cjs/components/Mappings/Import/SelectMappings.d.ts +1 -1
  122. package/lib/cjs/components/Mappings/Import/SelectMappings.js +7 -7
  123. package/lib/cjs/components/Mappings/Import/SelectMappings.js.map +1 -1
  124. package/lib/cjs/components/Mappings/MappingListItem.js.map +1 -1
  125. package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  126. package/lib/cjs/components/Mappings/MappingViewActionGroup.js +6 -7
  127. package/lib/cjs/components/Mappings/MappingViewActionGroup.js.map +1 -1
  128. package/lib/cjs/components/Mappings/Mappings.js +3 -3
  129. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  130. package/lib/cjs/components/Mappings/MappingsView.js +14 -16
  131. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  132. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  133. package/lib/cjs/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  134. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  135. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  136. package/lib/cjs/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  137. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js +1 -1
  138. package/lib/cjs/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  139. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js +36 -18
  140. package/lib/cjs/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  141. package/lib/cjs/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  142. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js +8 -6
  143. package/lib/cjs/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  144. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +3 -1
  145. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +10 -9
  146. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  147. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  148. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +24 -66
  149. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  150. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  151. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +6 -17
  152. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  153. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  154. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +20 -161
  155. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  156. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.scss +5 -4
  157. package/lib/cjs/components/Properties/GroupColorToggle.js +4 -4
  158. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  159. package/lib/cjs/components/Properties/GroupInformationPanel.js +3 -3
  160. package/lib/cjs/components/Properties/GroupInformationPanel.js.map +1 -1
  161. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  162. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +90 -40
  163. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  164. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  165. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
  166. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
  167. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
  168. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
  169. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +24 -14
  170. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  171. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js +20 -39
  172. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  173. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +20 -29
  174. package/lib/cjs/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  175. package/lib/cjs/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
  176. package/lib/cjs/components/Properties/GroupProperties/SaveModal.js +7 -7
  177. package/lib/cjs/components/Properties/GroupProperties/SaveModal.js.map +1 -1
  178. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
  179. package/lib/cjs/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  180. package/lib/cjs/components/Properties/PropertyAction.js +9 -21
  181. package/lib/cjs/components/Properties/PropertyAction.js.map +1 -1
  182. package/lib/cjs/components/Properties/PropertyMenu.d.ts +1 -1
  183. package/lib/cjs/components/Properties/PropertyMenu.js +5 -10
  184. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  185. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +5 -5
  186. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  187. package/lib/cjs/components/Properties/PropertyNameCell.d.ts +1 -1
  188. package/lib/cjs/components/Properties/PropertyNameCell.js +4 -4
  189. package/lib/cjs/components/Properties/PropertyNameCell.js.map +1 -1
  190. package/lib/cjs/components/Properties/PropertyTable.js +5 -6
  191. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  192. package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +1 -1
  193. package/lib/cjs/components/Properties/PropertyTableToolbar.js +4 -4
  194. package/lib/cjs/components/Properties/PropertyTableToolbar.js.map +1 -1
  195. package/lib/cjs/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  196. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js +55 -0
  197. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  198. package/lib/cjs/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  199. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +62 -16
  200. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  201. package/lib/cjs/components/Properties/hooks/useForwardRef.d.ts +3 -0
  202. package/lib/cjs/components/Properties/hooks/useForwardRef.js +20 -0
  203. package/lib/cjs/components/Properties/hooks/useForwardRef.js.map +1 -0
  204. package/lib/cjs/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  205. package/lib/cjs/components/Properties/hooks/useValidator.js +4 -4
  206. package/lib/cjs/components/Properties/hooks/useValidator.js.map +1 -1
  207. package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +3 -1
  208. package/lib/cjs/components/SharedComponents/ActionPanel.js +9 -10
  209. package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
  210. package/lib/cjs/components/SharedComponents/DeleteModal.d.ts +1 -1
  211. package/lib/cjs/components/SharedComponents/DeleteModal.js +9 -10
  212. package/lib/cjs/components/SharedComponents/DeleteModal.js.map +1 -1
  213. package/lib/cjs/components/SharedComponents/EmptyMessage.js +4 -4
  214. package/lib/cjs/components/SharedComponents/EmptyMessage.js.map +1 -1
  215. package/lib/cjs/components/SharedComponents/LoadingOverlay.js +4 -4
  216. package/lib/cjs/components/SharedComponents/LoadingOverlay.js.map +1 -1
  217. package/lib/cjs/components/SharedComponents/LoadingSpinner.js +3 -3
  218. package/lib/cjs/components/SharedComponents/LoadingSpinner.js.map +1 -1
  219. package/lib/cjs/components/SharedComponents/StatusIcon.js +3 -3
  220. package/lib/cjs/components/SharedComponents/StatusIcon.js.map +1 -1
  221. package/lib/cjs/components/context/ExtractionClientContext.js.map +1 -1
  222. package/lib/cjs/components/context/ExtractionStateJobContext.js +3 -3
  223. package/lib/cjs/components/context/ExtractionStateJobContext.js.map +1 -1
  224. package/lib/cjs/components/context/GroupHilitedElementsContext.js +3 -3
  225. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  226. package/lib/cjs/components/context/GroupingApiConfigContext.js.map +1 -1
  227. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js +3 -3
  228. package/lib/cjs/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  229. package/lib/cjs/components/context/GroupsClientContext.js.map +1 -1
  230. package/lib/cjs/components/context/IModelsClientContext.js.map +1 -1
  231. package/lib/cjs/components/context/ITwinsClientContext.js +3 -3
  232. package/lib/cjs/components/context/ITwinsClientContext.js.map +1 -1
  233. package/lib/cjs/components/context/MappingClientContext.js.map +1 -1
  234. package/lib/cjs/components/context/PropertiesClientContext.js.map +1 -1
  235. package/lib/cjs/components/context/PropertiesGroupColorContext.js +3 -3
  236. package/lib/cjs/components/context/PropertiesGroupColorContext.js.map +1 -1
  237. package/lib/cjs/components/context/PropertyGridWrapperContext.js +3 -3
  238. package/lib/cjs/components/context/PropertyGridWrapperContext.js.map +1 -1
  239. package/lib/cjs/components/customUI/DefaultGroupingUI.js +3 -3
  240. package/lib/cjs/components/customUI/DefaultGroupingUI.js.map +1 -1
  241. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  242. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js +13 -18
  243. package/lib/cjs/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  244. package/lib/cjs/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  245. package/lib/cjs/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  246. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js +8 -8
  247. package/lib/cjs/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  248. package/lib/cjs/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  249. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js +16 -45
  250. package/lib/cjs/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  251. package/lib/cjs/decorators/BboxDimensionsDecorator.js +3 -10
  252. package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
  253. package/lib/cjs/formula/FormulaDataTypeResolver.d.ts +3 -2
  254. package/lib/cjs/formula/FormulaDataTypeResolver.js +10 -6
  255. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  256. package/lib/cjs/formula/FormulaFunctionProvider.js +146 -65
  257. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  258. package/lib/cjs/formula/FormulaOperatorsProvider.js +138 -44
  259. package/lib/cjs/formula/FormulaOperatorsProvider.js.map +1 -1
  260. package/lib/cjs/formula/FormulaSplitter.js +63 -13
  261. package/lib/cjs/formula/FormulaSplitter.js.map +1 -1
  262. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js +7 -14
  263. package/lib/cjs/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  264. package/lib/cjs/formula/IResult.js.map +1 -1
  265. package/lib/cjs/formula/InfixToPostfixConverter.js +4 -4
  266. package/lib/cjs/formula/InfixToPostfixConverter.js.map +1 -1
  267. package/lib/cjs/formula/InputStream.js +3 -3
  268. package/lib/cjs/formula/InputStream.js.map +1 -1
  269. package/lib/cjs/formula/ParenthesisValidator.js +3 -3
  270. package/lib/cjs/formula/ParenthesisValidator.js.map +1 -1
  271. package/lib/cjs/formula/Queue.js +3 -3
  272. package/lib/cjs/formula/Queue.js.map +1 -1
  273. package/lib/cjs/formula/Stack.js +3 -3
  274. package/lib/cjs/formula/Stack.js.map +1 -1
  275. package/lib/cjs/formula/StringBuilder.js +3 -3
  276. package/lib/cjs/formula/StringBuilder.js.map +1 -1
  277. package/lib/cjs/formula/Types.js.map +1 -1
  278. package/lib/cjs/formula/Utils.js +4 -4
  279. package/lib/cjs/formula/Utils.js.map +1 -1
  280. package/lib/cjs/grouping-mapping-widget.d.ts +3 -5
  281. package/lib/cjs/grouping-mapping-widget.js +4 -8
  282. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  283. package/lib/cjs/test/GroupPropertyUtils.test.js +27 -26
  284. package/lib/cjs/test/GroupPropertyUtils.test.js.map +1 -1
  285. package/lib/cjs/test/GroupingMappingCustomUI.test.js +4 -6
  286. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  287. package/lib/cjs/test/MockFactory.js +3 -3
  288. package/lib/cjs/test/MockFactory.js.map +1 -1
  289. package/lib/cjs/test/PropertyFieldsHelpers.js +3 -3
  290. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
  291. package/lib/cjs/test/QueryBuilder.test.js +3 -3
  292. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  293. package/lib/cjs/test/QueryBuilder.testdata.js +3 -3
  294. package/lib/cjs/test/QueryBuilder.testdata.js.map +1 -1
  295. package/lib/cjs/test/QueryBuilderTestData.js.map +1 -1
  296. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  297. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  298. package/lib/cjs/test/test-utils.js +4 -4
  299. package/lib/cjs/test/test-utils.js.map +1 -1
  300. package/lib/esm/WidgetShell/GroupingMapping.js +3 -5
  301. package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
  302. package/lib/esm/WidgetShell/GroupingMappingContent.js +4 -4
  303. package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
  304. package/lib/esm/WidgetShell/GroupingMappingHeader.d.ts +1 -1
  305. package/lib/esm/WidgetShell/GroupingMappingHeader.js +5 -5
  306. package/lib/esm/WidgetShell/GroupingMappingHeader.js.map +1 -1
  307. package/lib/esm/WidgetShell/GroupingMappingWidget.js +2 -4
  308. package/lib/esm/WidgetShell/GroupingMappingWidget.js.map +1 -1
  309. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +29 -23
  310. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  311. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.d.ts +1 -1
  312. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js +7 -7
  313. package/lib/esm/WidgetShell/WidgetHeader/WidgetHeader.js.map +1 -1
  314. package/lib/esm/common/hooks/useIsMounted.js +3 -3
  315. package/lib/esm/common/hooks/useIsMounted.js.map +1 -1
  316. package/lib/esm/common/hooks/useMemoizedCollectionPick.js +3 -3
  317. package/lib/esm/common/hooks/useMemoizedCollectionPick.js.map +1 -1
  318. package/lib/esm/common/utils.js +3 -3
  319. package/lib/esm/common/utils.js.map +1 -1
  320. package/lib/esm/common/viewerUtils.js +2 -2
  321. package/lib/esm/common/viewerUtils.js.map +1 -1
  322. package/lib/esm/components/Constants.js +4 -4
  323. package/lib/esm/components/Constants.js.map +1 -1
  324. package/lib/esm/components/GroupingMappingContext.js +14 -5
  325. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  326. package/lib/esm/components/Groups/Editing/GroupAction.js +8 -10
  327. package/lib/esm/components/Groups/Editing/GroupAction.js.map +1 -1
  328. package/lib/esm/components/Groups/Editing/GroupDetails.d.ts +1 -1
  329. package/lib/esm/components/Groups/Editing/GroupDetails.js +5 -7
  330. package/lib/esm/components/Groups/Editing/GroupDetails.js.map +1 -1
  331. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.d.ts +1 -1
  332. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js +4 -4
  333. package/lib/esm/components/Groups/Editing/GroupDetailsActionPanel.js.map +1 -1
  334. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js +4 -4
  335. package/lib/esm/components/Groups/Editing/GroupDetailsStep.js.map +1 -1
  336. package/lib/esm/components/Groups/GroupColorLegend.js +3 -3
  337. package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
  338. package/lib/esm/components/Groups/GroupListItem.js +3 -4
  339. package/lib/esm/components/Groups/GroupListItem.js.map +1 -1
  340. package/lib/esm/components/Groups/GroupListItem.scss +2 -2
  341. package/lib/esm/components/Groups/GroupMenuActions.js +17 -6
  342. package/lib/esm/components/Groups/GroupMenuActions.js.map +1 -1
  343. package/lib/esm/components/Groups/GroupOverlapProgressBar.js.map +1 -1
  344. package/lib/esm/components/Groups/Groups.js +3 -3
  345. package/lib/esm/components/Groups/Groups.js.map +1 -1
  346. package/lib/esm/components/Groups/GroupsAddButton.d.ts +1 -1
  347. package/lib/esm/components/Groups/GroupsAddButton.js +4 -4
  348. package/lib/esm/components/Groups/GroupsAddButton.js.map +1 -1
  349. package/lib/esm/components/Groups/GroupsAddButton.scss +1 -1
  350. package/lib/esm/components/Groups/GroupsShowHideButtons.d.ts +1 -1
  351. package/lib/esm/components/Groups/GroupsShowHideButtons.js +2 -2
  352. package/lib/esm/components/Groups/GroupsShowHideButtons.js.map +1 -1
  353. package/lib/esm/components/Groups/GroupsView.js +10 -12
  354. package/lib/esm/components/Groups/GroupsView.js.map +1 -1
  355. package/lib/esm/components/Groups/GroupsView.scss +1 -1
  356. package/lib/esm/components/Groups/GroupsVisualization.js +21 -22
  357. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  358. package/lib/esm/components/Groups/GroupsVisualizationActions.js +4 -4
  359. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  360. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.d.ts +1 -1
  361. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js +5 -5
  362. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.js.map +1 -1
  363. package/lib/esm/components/Groups/OverlappedElementsInformationPanel.scss +7 -7
  364. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js +13 -35
  365. package/lib/esm/components/Groups/QueryBuilder/QueryBuilder.js.map +1 -1
  366. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js +4 -4
  367. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderActionPanel.js.map +1 -1
  368. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.d.ts +1 -1
  369. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js +4 -4
  370. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderCustomUI.js.map +1 -1
  371. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js +4 -4
  372. package/lib/esm/components/Groups/QueryBuilder/QueryBuilderStep.js.map +1 -1
  373. package/lib/esm/components/Groups/ToggleGroupVisibility.js +3 -3
  374. package/lib/esm/components/Groups/ToggleGroupVisibility.js.map +1 -1
  375. package/lib/esm/components/Groups/groupsHelpers.js +9 -5
  376. package/lib/esm/components/Groups/groupsHelpers.js.map +1 -1
  377. package/lib/esm/components/Groups/hooks/useFetchGroups.js.map +1 -1
  378. package/lib/esm/components/Groups/hooks/useGroupsOperations.d.ts +1 -1
  379. package/lib/esm/components/Groups/hooks/useGroupsOperations.js +5 -5
  380. package/lib/esm/components/Groups/hooks/useGroupsOperations.js.map +1 -1
  381. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  382. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.js.map +1 -1
  383. package/lib/esm/components/Groups/hooks/useVisualization.js +3 -5
  384. package/lib/esm/components/Groups/hooks/useVisualization.js.map +1 -1
  385. package/lib/esm/components/Mappings/BlockingOverlay.js +3 -3
  386. package/lib/esm/components/Mappings/BlockingOverlay.js.map +1 -1
  387. package/lib/esm/components/Mappings/Editing/MappingAction.js +11 -15
  388. package/lib/esm/components/Mappings/Editing/MappingAction.js.map +1 -1
  389. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.d.ts +1 -1
  390. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js +1 -1
  391. package/lib/esm/components/Mappings/Extraction/ExtractionLogCustomFilter.js.map +1 -1
  392. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js +9 -6
  393. package/lib/esm/components/Mappings/Extraction/ExtractionMessageModal.js.map +1 -1
  394. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js +3 -3
  395. package/lib/esm/components/Mappings/Extraction/ExtractionStates/QueuedExtractionState.js.map +1 -1
  396. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js +3 -3
  397. package/lib/esm/components/Mappings/Extraction/ExtractionStates/RunningExtractionState.js.map +1 -1
  398. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js +3 -3
  399. package/lib/esm/components/Mappings/Extraction/ExtractionStates/StartingExtractionState.js.map +1 -1
  400. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js +3 -3
  401. package/lib/esm/components/Mappings/Extraction/ExtractionStates/TerminalExtractionState.js.map +1 -1
  402. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.d.ts +1 -1
  403. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js +9 -9
  404. package/lib/esm/components/Mappings/Extraction/ExtractionStatus.js.map +1 -1
  405. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js +4 -4
  406. package/lib/esm/components/Mappings/Extraction/ExtractionStatusIcon.js.map +1 -1
  407. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js +27 -31
  408. package/lib/esm/components/Mappings/Import/ConfirmMappingsImport.js.map +1 -1
  409. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.d.ts +1 -1
  410. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js +3 -3
  411. package/lib/esm/components/Mappings/Import/MappingImportWizardModal.js.map +1 -1
  412. package/lib/esm/components/Mappings/Import/SelectIModel.d.ts +1 -1
  413. package/lib/esm/components/Mappings/Import/SelectIModel.js +5 -5
  414. package/lib/esm/components/Mappings/Import/SelectIModel.js.map +1 -1
  415. package/lib/esm/components/Mappings/Import/SelectITwin.js +2 -2
  416. package/lib/esm/components/Mappings/Import/SelectITwin.js.map +1 -1
  417. package/lib/esm/components/Mappings/Import/SelectITwin.scss +1 -1
  418. package/lib/esm/components/Mappings/Import/SelectMappings.d.ts +1 -1
  419. package/lib/esm/components/Mappings/Import/SelectMappings.js +8 -8
  420. package/lib/esm/components/Mappings/Import/SelectMappings.js.map +1 -1
  421. package/lib/esm/components/Mappings/MappingListItem.js.map +1 -1
  422. package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  423. package/lib/esm/components/Mappings/MappingViewActionGroup.js +8 -9
  424. package/lib/esm/components/Mappings/MappingViewActionGroup.js.map +1 -1
  425. package/lib/esm/components/Mappings/Mappings.js +3 -3
  426. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  427. package/lib/esm/components/Mappings/MappingsView.js +16 -18
  428. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  429. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js +3 -1
  430. package/lib/esm/components/Mappings/hooks/useFetchExtractionStatus.js.map +1 -1
  431. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.d.ts +1 -1
  432. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js +3 -3
  433. package/lib/esm/components/Mappings/hooks/useFetchMappingExtractionStatus.js.map +1 -1
  434. package/lib/esm/components/Mappings/hooks/useFetchMappings.js +1 -1
  435. package/lib/esm/components/Mappings/hooks/useFetchMappings.js.map +1 -1
  436. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js +36 -18
  437. package/lib/esm/components/Mappings/hooks/useMappingsOperations.js.map +1 -1
  438. package/lib/esm/components/Mappings/hooks/useRunExtraction.d.ts +1 -1
  439. package/lib/esm/components/Mappings/hooks/useRunExtraction.js +8 -6
  440. package/lib/esm/components/Mappings/hooks/useRunExtraction.js.map +1 -1
  441. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +3 -1
  442. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +11 -10
  443. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  444. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  445. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +27 -66
  446. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  447. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  448. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +8 -19
  449. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  450. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  451. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +21 -139
  452. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  453. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.scss +5 -4
  454. package/lib/esm/components/Properties/GroupColorToggle.js +4 -4
  455. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  456. package/lib/esm/components/Properties/GroupInformationPanel.js +3 -3
  457. package/lib/esm/components/Properties/GroupInformationPanel.js.map +1 -1
  458. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.d.ts +1 -1
  459. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +94 -44
  460. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  461. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  462. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.d.ts +1 -1
  463. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js +5 -5
  464. package/lib/esm/components/Properties/GroupProperties/GroupPropertyListItem.js.map +1 -1
  465. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +1 -1
  466. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +26 -16
  467. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  468. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js +21 -40
  469. package/lib/esm/components/Properties/GroupProperties/GroupPropertyUtils.js.map +1 -1
  470. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js +26 -35
  471. package/lib/esm/components/Properties/GroupProperties/GroupsPropertiesSelectionModal.js.map +1 -1
  472. package/lib/esm/components/Properties/GroupProperties/SaveModal.d.ts +1 -1
  473. package/lib/esm/components/Properties/GroupProperties/SaveModal.js +8 -8
  474. package/lib/esm/components/Properties/GroupProperties/SaveModal.js.map +1 -1
  475. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js +4 -4
  476. package/lib/esm/components/Properties/GroupProperties/SortableHorizontalTile.js.map +1 -1
  477. package/lib/esm/components/Properties/PropertyAction.js +9 -21
  478. package/lib/esm/components/Properties/PropertyAction.js.map +1 -1
  479. package/lib/esm/components/Properties/PropertyMenu.d.ts +1 -1
  480. package/lib/esm/components/Properties/PropertyMenu.js +5 -10
  481. package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
  482. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +5 -5
  483. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  484. package/lib/esm/components/Properties/PropertyNameCell.d.ts +1 -1
  485. package/lib/esm/components/Properties/PropertyNameCell.js +4 -4
  486. package/lib/esm/components/Properties/PropertyNameCell.js.map +1 -1
  487. package/lib/esm/components/Properties/PropertyTable.js +5 -6
  488. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  489. package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +1 -1
  490. package/lib/esm/components/Properties/PropertyTableToolbar.js +4 -4
  491. package/lib/esm/components/Properties/PropertyTableToolbar.js.map +1 -1
  492. package/lib/esm/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  493. package/lib/esm/components/Properties/ScrollableExpandableBlock.js +29 -0
  494. package/lib/esm/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  495. package/lib/esm/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  496. package/lib/esm/components/Properties/hooks/useFormulaValidation.js +60 -15
  497. package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  498. package/lib/esm/components/Properties/hooks/useForwardRef.d.ts +3 -0
  499. package/lib/esm/components/Properties/hooks/useForwardRef.js +16 -0
  500. package/lib/esm/components/Properties/hooks/useForwardRef.js.map +1 -0
  501. package/lib/esm/components/Properties/hooks/usePropertiesQuery.js.map +1 -1
  502. package/lib/esm/components/Properties/hooks/useValidator.js +4 -4
  503. package/lib/esm/components/Properties/hooks/useValidator.js.map +1 -1
  504. package/lib/esm/components/SharedComponents/ActionPanel.d.ts +3 -1
  505. package/lib/esm/components/SharedComponents/ActionPanel.js +9 -10
  506. package/lib/esm/components/SharedComponents/ActionPanel.js.map +1 -1
  507. package/lib/esm/components/SharedComponents/DeleteModal.d.ts +1 -1
  508. package/lib/esm/components/SharedComponents/DeleteModal.js +10 -11
  509. package/lib/esm/components/SharedComponents/DeleteModal.js.map +1 -1
  510. package/lib/esm/components/SharedComponents/EmptyMessage.js +4 -4
  511. package/lib/esm/components/SharedComponents/EmptyMessage.js.map +1 -1
  512. package/lib/esm/components/SharedComponents/LoadingOverlay.js +4 -4
  513. package/lib/esm/components/SharedComponents/LoadingOverlay.js.map +1 -1
  514. package/lib/esm/components/SharedComponents/LoadingSpinner.js +3 -3
  515. package/lib/esm/components/SharedComponents/LoadingSpinner.js.map +1 -1
  516. package/lib/esm/components/SharedComponents/StatusIcon.js +3 -3
  517. package/lib/esm/components/SharedComponents/StatusIcon.js.map +1 -1
  518. package/lib/esm/components/context/ExtractionClientContext.js.map +1 -1
  519. package/lib/esm/components/context/ExtractionStateJobContext.js +3 -3
  520. package/lib/esm/components/context/ExtractionStateJobContext.js.map +1 -1
  521. package/lib/esm/components/context/GroupHilitedElementsContext.js +3 -3
  522. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  523. package/lib/esm/components/context/GroupingApiConfigContext.js.map +1 -1
  524. package/lib/esm/components/context/GroupingMappingCustomUIContext.js +3 -3
  525. package/lib/esm/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  526. package/lib/esm/components/context/GroupsClientContext.js.map +1 -1
  527. package/lib/esm/components/context/IModelsClientContext.js.map +1 -1
  528. package/lib/esm/components/context/ITwinsClientContext.js +3 -3
  529. package/lib/esm/components/context/ITwinsClientContext.js.map +1 -1
  530. package/lib/esm/components/context/MappingClientContext.js.map +1 -1
  531. package/lib/esm/components/context/PropertiesClientContext.js.map +1 -1
  532. package/lib/esm/components/context/PropertiesGroupColorContext.js +3 -3
  533. package/lib/esm/components/context/PropertiesGroupColorContext.js.map +1 -1
  534. package/lib/esm/components/context/PropertyGridWrapperContext.js +3 -3
  535. package/lib/esm/components/context/PropertyGridWrapperContext.js.map +1 -1
  536. package/lib/esm/components/customUI/DefaultGroupingUI.js +3 -3
  537. package/lib/esm/components/customUI/DefaultGroupingUI.js.map +1 -1
  538. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  539. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js +14 -19
  540. package/lib/esm/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  541. package/lib/esm/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  542. package/lib/esm/components/customUI/ManualGroupingCustomUI.d.ts +1 -1
  543. package/lib/esm/components/customUI/ManualGroupingCustomUI.js +8 -8
  544. package/lib/esm/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  545. package/lib/esm/components/customUI/SearchGroupingCustomUI.d.ts +1 -1
  546. package/lib/esm/components/customUI/SearchGroupingCustomUI.js +16 -45
  547. package/lib/esm/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  548. package/lib/esm/decorators/BboxDimensionsDecorator.js +5 -12
  549. package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
  550. package/lib/esm/formula/FormulaDataTypeResolver.d.ts +3 -2
  551. package/lib/esm/formula/FormulaDataTypeResolver.js +10 -6
  552. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  553. package/lib/esm/formula/FormulaFunctionProvider.js +146 -65
  554. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  555. package/lib/esm/formula/FormulaOperatorsProvider.js +138 -44
  556. package/lib/esm/formula/FormulaOperatorsProvider.js.map +1 -1
  557. package/lib/esm/formula/FormulaSplitter.js +63 -13
  558. package/lib/esm/formula/FormulaSplitter.js.map +1 -1
  559. package/lib/esm/formula/FormulaTokensDataTypeResolver.js +7 -14
  560. package/lib/esm/formula/FormulaTokensDataTypeResolver.js.map +1 -1
  561. package/lib/esm/formula/IResult.js.map +1 -1
  562. package/lib/esm/formula/InfixToPostfixConverter.js +5 -5
  563. package/lib/esm/formula/InfixToPostfixConverter.js.map +1 -1
  564. package/lib/esm/formula/InputStream.js +3 -3
  565. package/lib/esm/formula/InputStream.js.map +1 -1
  566. package/lib/esm/formula/ParenthesisValidator.js +3 -3
  567. package/lib/esm/formula/ParenthesisValidator.js.map +1 -1
  568. package/lib/esm/formula/Queue.js +3 -3
  569. package/lib/esm/formula/Queue.js.map +1 -1
  570. package/lib/esm/formula/Stack.js +3 -3
  571. package/lib/esm/formula/Stack.js.map +1 -1
  572. package/lib/esm/formula/StringBuilder.js +3 -3
  573. package/lib/esm/formula/StringBuilder.js.map +1 -1
  574. package/lib/esm/formula/Types.js.map +1 -1
  575. package/lib/esm/formula/Utils.js +4 -4
  576. package/lib/esm/formula/Utils.js.map +1 -1
  577. package/lib/esm/grouping-mapping-widget.d.ts +3 -5
  578. package/lib/esm/grouping-mapping-widget.js +6 -8
  579. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  580. package/lib/esm/test/GroupPropertyUtils.test.js +28 -27
  581. package/lib/esm/test/GroupPropertyUtils.test.js.map +1 -1
  582. package/lib/esm/test/GroupingMappingCustomUI.test.js +4 -6
  583. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  584. package/lib/esm/test/MockFactory.js +3 -3
  585. package/lib/esm/test/MockFactory.js.map +1 -1
  586. package/lib/esm/test/PropertyFieldsHelpers.js +3 -3
  587. package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -1
  588. package/lib/esm/test/QueryBuilder.test.js +3 -3
  589. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  590. package/lib/esm/test/QueryBuilder.testdata.js +3 -3
  591. package/lib/esm/test/QueryBuilder.testdata.js.map +1 -1
  592. package/lib/esm/test/QueryBuilderTestData.js.map +1 -1
  593. package/lib/esm/test/WidgetHeader.test.js +3 -3
  594. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  595. package/lib/esm/test/test-utils.js +4 -4
  596. package/lib/esm/test/test-utils.js.map +1 -1
  597. package/package.json +8 -4
  598. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  599. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -87
  600. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  601. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  602. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  603. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -87
  604. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
  605. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  606. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -60
  607. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  608. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  609. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  610. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -60
  611. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import React from "react";
6
6
  import { InformationPanel, InformationPanelBody, InformationPanelHeader, LabeledTextarea, Text } from "@itwin/itwinui-react";
7
7
  import "./GroupInformationPanel.scss";
@@ -1 +1 @@
1
- {"version":3,"file":"GroupInformationPanel.js","sourceRoot":"","sources":["../../../../src/components/Properties/GroupInformationPanel.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC7H,OAAO,8BAA8B,CAAC;AAStC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAA8B,EAAE,EAAE;IACzG,OAAO,CACL,oBAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM;QAC9B,oBAAC,sBAAsB,IAAC,OAAO,EAAE,OAAO;YACtC,oBAAC,IAAI,IAAC,OAAO,EAAC,YAAY,IAAE,GAAG,SAAS,cAAc,CAAQ,CACvC;QACzB,oBAAC,oBAAoB;YACnB,6BAAK,SAAS,EAAC,4BAA4B;gBACzC,oBAAC,eAAe,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,QAAC,YAAY,EAAE,KAAK,GAAI,CACrE,CACe,CACN,CACpB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { InformationPanel, InformationPanelBody, InformationPanelHeader, LabeledTextarea, Text } from \"@itwin/itwinui-react\";\nimport \"./GroupInformationPanel.scss\";\n\nexport interface GroupInformationPanelProps {\n isOpen: boolean;\n onClose: () => void;\n groupName: string;\n query: string;\n}\n\nexport const GroupInformationPanel = ({ isOpen, onClose, groupName, query }: GroupInformationPanelProps) => {\n return (\n <InformationPanel isOpen={isOpen}>\n <InformationPanelHeader onClose={onClose}>\n <Text variant=\"subheading\">{`${groupName} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className=\"gmw-group-information-body\">\n <LabeledTextarea label=\"Query\" rows={15} readOnly defaultValue={query} />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n );\n};\n"]}
1
+ {"version":3,"file":"GroupInformationPanel.js","sourceRoot":"","sources":["../../../../src/components/Properties/GroupInformationPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC7H,OAAO,8BAA8B,CAAC;AAStC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAA8B,EAAE,EAAE;IACzG,OAAO,CACL,oBAAC,gBAAgB,IAAC,MAAM,EAAE,MAAM;QAC9B,oBAAC,sBAAsB,IAAC,OAAO,EAAE,OAAO;YACtC,oBAAC,IAAI,IAAC,OAAO,EAAC,YAAY,IAAE,GAAG,SAAS,cAAc,CAAQ,CACvC;QACzB,oBAAC,oBAAoB;YACnB,6BAAK,SAAS,EAAC,4BAA4B;gBACzC,oBAAC,eAAe,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,QAAC,YAAY,EAAE,KAAK,GAAI,CACrE,CACe,CACN,CACpB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { InformationPanel, InformationPanelBody, InformationPanelHeader, LabeledTextarea, Text } from \"@itwin/itwinui-react\";\nimport \"./GroupInformationPanel.scss\";\n\nexport interface GroupInformationPanelProps {\n isOpen: boolean;\n onClose: () => void;\n groupName: string;\n query: string;\n}\n\nexport const GroupInformationPanel = ({ isOpen, onClose, groupName, query }: GroupInformationPanelProps) => {\n return (\n <InformationPanel isOpen={isOpen}>\n <InformationPanelHeader onClose={onClose}>\n <Text variant=\"subheading\">{`${groupName} Information`}</Text>\n </InformationPanelHeader>\n <InformationPanelBody>\n <div className=\"gmw-group-information-body\">\n <LabeledTextarea label=\"Query\" rows={15} readOnly defaultValue={query} />\n </div>\n </InformationPanelBody>\n </InformationPanel>\n );\n};\n"]}
@@ -19,5 +19,5 @@ export declare const quantityTypesSelectionOptions: SelectOption<QuantityType |
19
19
  * Component to create or update a group.
20
20
  * @public
21
21
  */
22
- export declare const GroupPropertyAction: ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel, }: GroupPropertyActionProps) => JSX.Element;
22
+ export declare const GroupPropertyAction: ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel }: GroupPropertyActionProps) => JSX.Element;
23
23
  //# sourceMappingURL=GroupPropertyAction.d.ts.map
@@ -1,22 +1,29 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import { PropertyValueFormat } from "@itwin/presentation-common";
6
- import { Alert, Button, Fieldset, LabeledInput, LabeledSelect, Text, } from "@itwin/itwinui-react";
7
- import React, { useCallback, useEffect, useState } from "react";
6
+ import { Alert, Button, Fieldset, Icon, LabeledInput, LabeledSelect, Text } from "@itwin/itwinui-react";
7
+ import React, { useCallback, useEffect, useRef, useState } from "react";
8
8
  import ActionPanel from "../../SharedComponents/ActionPanel";
9
9
  import useValidator, { NAME_REQUIREMENTS } from "../hooks/useValidator";
10
10
  import { useGroupingMappingApiConfig } from "../../context/GroupingApiConfigContext";
11
11
  import { DataType, QuantityType } from "@itwin/insights-client";
12
12
  import "./GroupPropertyAction.scss";
13
- import { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties, } from "./GroupPropertyUtils";
14
- import { manufactureKeys } from "../../../common/viewerUtils";
13
+ import { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties } from "./GroupPropertyUtils";
14
+ import { clearAll, manufactureKeys } from "../../../common/viewerUtils";
15
15
  import { SaveModal } from "./SaveModal";
16
16
  import { GroupsPropertiesSelectionModal } from "./GroupsPropertiesSelectionModal";
17
17
  import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
18
18
  import { GroupPropertyListItem } from "./GroupPropertyListItem";
19
19
  import { usePropertiesClient } from "../../context/PropertiesClientContext";
20
+ import { SvgFunction, SvgLabel, SvgMeasure } from "@itwin/itwinui-icons-react";
21
+ import { CalculatedPropertyActionWithVisuals } from "../CalculatedProperties/CalculatedPropertyActionWithVisuals";
22
+ import { handleError } from "../../../common/utils";
23
+ import { CustomCalculationAction } from "../CustomCalculations/CustomCalculationAction";
24
+ import { usePropertiesQuery } from "../hooks/usePropertiesQuery";
25
+ import { useFormulaValidation } from "../hooks/useFormulaValidation";
26
+ import { ScrollableExpandableBlock } from "../ScrollableExpandableBlock";
20
27
  export const quantityTypesSelectionOptions = [
21
28
  { value: QuantityType.Area, label: "Area" },
22
29
  { value: QuantityType.Distance, label: "Distance" },
@@ -31,24 +38,36 @@ export const quantityTypesSelectionOptions = [
31
38
  * Component to create or update a group.
32
39
  * @public
33
40
  */
34
- export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel, }) => {
35
- const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();
41
+ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel }) => {
42
+ const actionContainerRef = useRef(null);
43
+ const calculatedPropertyActionRef = useRef(null);
44
+ const customCalculationActionRef = useRef(null);
36
45
  const propertiesClient = usePropertiesClient();
46
+ const queryClient = useQueryClient();
37
47
  const [propertyName, setPropertyName] = useState("");
38
48
  const [oldPropertyName, setOldPropertyName] = useState("");
39
- const [dataType, setDataType] = useState(DataType.String);
40
- const [quantityType, setQuantityType] = useState();
49
+ const [dataType, setDataType] = useState(groupProperty?.dataType ?? DataType.String);
50
+ const [quantityType, setQuantityType] = useState(groupProperty?.quantityType ?? undefined);
41
51
  const [selectedProperties, setSelectedProperties] = useState([]);
42
52
  const [propertiesMetaData, setPropertiesMetaData] = useState([]);
43
53
  const [propertiesNotFoundAlert, setPropertiesNotFoundAlert] = useState(false);
44
54
  const [validator, showValidationMessage] = useValidator();
45
55
  const [showPropertiesSelectionModal, setShowPropertiesSelectionModal] = useState(false);
46
56
  const [showSaveConfirmationModal, setShowSaveConfirmationModal] = useState(false);
47
- const queryClient = useQueryClient();
57
+ const [calculatedPropertyType, setCalculatedPropertyType] = useState(groupProperty?.calculatedPropertyType ?? undefined);
58
+ const [isCalculatedBlockExpanded, setIsCalculatedBlockExpanded] = useState(!!calculatedPropertyType);
59
+ const [formula, setFormula] = useState(groupProperty?.formula ?? undefined);
60
+ const [formulaErrorMessage, setFormulaErrorMessage] = useState(undefined);
61
+ const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();
62
+ const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, group.id, getAccessToken, propertiesClient);
63
+ const { forceValidation } = useFormulaValidation(propertyName.toLowerCase(), formula, groupProperties?.properties ?? [], setFormulaErrorMessage, dataType);
48
64
  const reset = useCallback(() => {
49
65
  setPropertyName("");
50
66
  setDataType(DataType.String);
67
+ setQuantityType(undefined);
51
68
  setSelectedProperties([]);
69
+ setCalculatedPropertyType(undefined);
70
+ setFormula(undefined);
52
71
  }, []);
53
72
  const fetchPropertiesMetadata = useCallback(async () => {
54
73
  if (!iModelConnection)
@@ -56,8 +75,8 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
56
75
  const result = await manufactureKeys(group.query, iModelConnection);
57
76
  const descriptor = await fetchPresentationDescriptor(iModelConnection, result);
58
77
  // Only allow primitives and structs
59
- const propertyFields = descriptor?.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive ||
60
- field.type.valueFormat === PropertyValueFormat.Struct) ?? [];
78
+ const propertyFields = descriptor?.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive || field.type.valueFormat === PropertyValueFormat.Struct) ??
79
+ [];
61
80
  const propertiesMetaData = convertPresentationFields(propertyFields);
62
81
  let groupPropertyDetails = null;
63
82
  if (groupProperty) {
@@ -66,7 +85,17 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
66
85
  }
67
86
  return { propertiesMetaData, groupPropertyDetails };
68
87
  }, [getAccessToken, group.id, group.query, groupProperty, iModelConnection, mappingId, propertiesClient]);
69
- const { data, isFetching: isLoadingProperties, isSuccess: isLoadingPropertiesSuccessful } = useQuery(["properties", iModelId, mappingId, group.id, groupProperty?.id, "metadata"], fetchPropertiesMetadata);
88
+ const scrollToFormulaErrorMessage = useCallback(() => {
89
+ setTimeout(() => {
90
+ if (actionContainerRef.current && customCalculationActionRef.current) {
91
+ actionContainerRef.current.scrollTo({
92
+ top: customCalculationActionRef.current.offsetTop,
93
+ behavior: "smooth",
94
+ });
95
+ }
96
+ }, 500);
97
+ }, [actionContainerRef]);
98
+ const { data, isFetching: isLoadingProperties, isSuccess: isLoadingPropertiesSuccessful, } = useQuery(["properties", iModelId, mappingId, group.id, groupProperty?.id, "metadata"], fetchPropertiesMetadata);
70
99
  useEffect(() => {
71
100
  if (isLoadingPropertiesSuccessful && data?.propertiesMetaData) {
72
101
  setPropertiesMetaData(data.propertiesMetaData);
@@ -76,14 +105,29 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
76
105
  setDataType(data.groupPropertyDetails.dataType);
77
106
  if (data.groupPropertyDetails.quantityType)
78
107
  setQuantityType(data.groupPropertyDetails.quantityType);
79
- const properties = findProperties(data.groupPropertyDetails.ecProperties ?? [], data.propertiesMetaData);
80
- if (properties.length === 0) {
81
- setPropertiesNotFoundAlert(true);
108
+ if (data.groupPropertyDetails.ecProperties) {
109
+ const properties = findProperties(data.groupPropertyDetails.ecProperties, data.propertiesMetaData);
110
+ if (properties.length === 0) {
111
+ setPropertiesNotFoundAlert(true);
112
+ }
113
+ setSelectedProperties(properties);
82
114
  }
83
- setSelectedProperties(properties);
84
115
  }
85
116
  }
86
117
  }, [data, isLoadingPropertiesSuccessful]);
118
+ useEffect(() => {
119
+ if (calculatedPropertyType) {
120
+ setDataType(DataType.Double);
121
+ }
122
+ if (isCalculatedBlockExpanded === false || !calculatedPropertyType) {
123
+ clearAll();
124
+ }
125
+ }, [calculatedPropertyType, isCalculatedBlockExpanded]);
126
+ useEffect(() => {
127
+ if (formulaErrorMessage) {
128
+ scrollToFormulaErrorMessage();
129
+ }
130
+ }, [formulaErrorMessage, scrollToFormulaErrorMessage]);
87
131
  const { mutate: onSave, isLoading: isSaving } = useMutation({
88
132
  mutationFn: async () => {
89
133
  const accessToken = await getAccessToken();
@@ -92,6 +136,8 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
92
136
  dataType,
93
137
  quantityType,
94
138
  ecProperties: selectedProperties.map((p) => convertToECProperties(p)).flat(),
139
+ calculatedPropertyType,
140
+ formula,
95
141
  };
96
142
  return groupProperty
97
143
  ? propertiesClient.updateProperty(accessToken, mappingId, group.id, groupProperty.id, newGroupProperty)
@@ -102,6 +148,9 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
102
148
  reset();
103
149
  await queryClient.invalidateQueries(["properties", iModelId, mappingId, group.id]);
104
150
  },
151
+ onError(error) {
152
+ handleError(error.status);
153
+ },
105
154
  });
106
155
  const handleSaveClick = async () => {
107
156
  if (!validator.allValid()) {
@@ -118,44 +167,45 @@ export const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuc
118
167
  const handleCloseSaveModal = () => {
119
168
  setShowSaveConfirmationModal(false);
120
169
  };
121
- const isLoading = isLoadingProperties || isSaving;
170
+ const isLoading = isLoadingProperties || isSaving || isLoadingGroupProperties;
122
171
  return (React.createElement(React.Fragment, null,
123
- React.createElement("div", { className: 'gmw-group-property-action-container' },
124
- React.createElement(Fieldset, { disabled: isLoading, className: 'gmw-property-options', legend: 'Property Details' },
125
- React.createElement(Text, { variant: 'small', as: 'small', className: 'gmw-field-legend' }, "Asterisk * indicates mandatory fields."),
126
- React.createElement(LabeledInput, { id: 'propertyName', label: 'Property Name', value: propertyName, required: true, onChange: (event) => {
172
+ React.createElement("div", { className: "gmw-group-property-action-container", ref: actionContainerRef },
173
+ React.createElement(Fieldset, { disabled: isLoading, className: "gmw-property-options", legend: "Property Details" },
174
+ React.createElement(Text, { variant: "small", as: "small", className: "gmw-field-legend" }, "Asterisk * indicates mandatory fields."),
175
+ React.createElement(LabeledInput, { id: "propertyName", label: "Property Name", value: propertyName, required: true, onChange: (event) => {
127
176
  setPropertyName(event.target.value);
128
177
  validator.showMessageFor("propertyName");
129
- }, message: validator.message("propertyName", propertyName, NAME_REQUIREMENTS), status: validator.message("propertyName", propertyName, NAME_REQUIREMENTS)
130
- ? "negative"
131
- : undefined, onBlur: () => {
178
+ }, message: validator.message("propertyName", propertyName, NAME_REQUIREMENTS), status: validator.message("propertyName", propertyName, NAME_REQUIREMENTS) ? "negative" : undefined, onBlur: () => {
132
179
  validator.showMessageFor("propertyName");
133
180
  } }),
134
- React.createElement(LabeledSelect, { label: "Data Type", id: 'dataType', options: [
181
+ React.createElement(LabeledSelect, { label: "Data Type", id: "dataType", options: [
135
182
  { value: DataType.Boolean, label: "Boolean" },
136
183
  { value: DataType.Integer, label: "Integer" },
137
184
  { value: DataType.Double, label: "Double" },
138
185
  { value: DataType.String, label: "String" },
139
- ], required: true, value: dataType, onChange: (value) => {
186
+ ], required: true, value: calculatedPropertyType ? DataType.Double : dataType, onChange: (value) => {
140
187
  validator.showMessageFor("dataType");
141
188
  setDataType(value);
142
- }, message: validator.message("dataType", propertyName, "required"), status: validator.message("dataType", propertyName, "required")
143
- ? "negative"
144
- : undefined, onBlur: () => {
189
+ }, message: validator.message("dataType", propertyName, "required"), status: validator.message("dataType", propertyName, "required") ? "negative" : undefined, onBlur: () => {
145
190
  validator.showMessageFor("dataType");
146
- }, onShow: () => { }, onHide: () => { } }),
147
- React.createElement(LabeledSelect, { label: 'Quantity Type', options: quantityTypesSelectionOptions, value: quantityType, onChange: setQuantityType, onShow: () => { }, onHide: () => { }, placeholder: 'No Quantity Type' })),
148
- propertiesNotFoundAlert &&
149
- React.createElement(Alert, { type: "warning" }, "Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new selection is made and saved."),
150
- React.createElement(Fieldset, { className: 'gmw-property-view-container', legend: "Mapped Properties" },
151
- React.createElement("div", { className: "gmw-property-view-button" },
152
- React.createElement(Button, { onClick: async () => setShowPropertiesSelectionModal(true), disabled: isLoading }, "Select Properties")),
153
- React.createElement("div", { className: "gmw-properties-list" }, selectedProperties.length === 0 && !isLoading ?
154
- React.createElement("div", { className: "gmw-empty-selection" },
191
+ }, disabled: calculatedPropertyType ? true : false, onShow: () => { }, onHide: () => { } }),
192
+ React.createElement(LabeledSelect, { label: "Quantity Type", options: quantityTypesSelectionOptions, value: quantityType, onChange: setQuantityType, onShow: () => { }, onHide: () => { }, placeholder: "No Quantity Type" })),
193
+ propertiesNotFoundAlert && (React.createElement(Alert, { type: "warning" }, "Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new selection is made and saved.")),
194
+ React.createElement(ScrollableExpandableBlock, { title: "Mapped Properties", endIcon: React.createElement(Icon, { fill: selectedProperties.length > 0 ? "informational" : "default" },
195
+ React.createElement(SvgLabel, null)), isExpanded: selectedProperties.length > 0, setIsExpanded: () => { } },
196
+ React.createElement("div", { className: "gmw-property-view-container" },
197
+ React.createElement("div", { className: "gmw-property-view-button" },
198
+ React.createElement(Button, { onClick: async () => setShowPropertiesSelectionModal(true), disabled: isLoading }, "Select Properties")),
199
+ React.createElement("div", { className: "gmw-properties-list" }, selectedProperties.length === 0 && !isLoading ? (React.createElement("div", { className: "gmw-empty-selection" },
155
200
  React.createElement(Text, null, "No properties selected."),
156
- React.createElement(Text, null, "Press the \"Select Properties\" button for options.")) :
157
- selectedProperties.map((property) => (React.createElement(GroupPropertyListItem, { key: property.key, content: `${property.displayLabel}`, title: `${property.actualECClassName}`, description: property.categoryLabel })))))),
158
- React.createElement(ActionPanel, { onSave: handleSaveClick, onCancel: onClickCancel, isLoading: isLoading, isSavingDisabled: selectedProperties.length === 0 || !propertyName || dataType === undefined }),
201
+ React.createElement(Text, null, "Press the \"Select Properties\" button for options."))) : (selectedProperties.map((property) => (React.createElement(GroupPropertyListItem, { key: property.key, content: `${property.displayLabel}`, title: `${property.actualECClassName}`, description: property.categoryLabel }))))))),
202
+ React.createElement(ScrollableExpandableBlock, { parentRef: actionContainerRef, ref: calculatedPropertyActionRef, title: "Calculated Property", endIcon: React.createElement(Icon, { fill: calculatedPropertyType ? "informational" : "default" },
203
+ React.createElement(SvgMeasure, null)), isExpanded: !!calculatedPropertyType, setIsExpanded: setIsCalculatedBlockExpanded },
204
+ React.createElement(CalculatedPropertyActionWithVisuals, { group: group, calculatedPropertyType: calculatedPropertyType, setCalculatedPropertyType: setCalculatedPropertyType })),
205
+ React.createElement(ScrollableExpandableBlock, { parentRef: actionContainerRef, ref: customCalculationActionRef, title: "Custom Calculation", endIcon: React.createElement(Icon, { fill: formula ? "informational" : "default" },
206
+ React.createElement(SvgFunction, null)), isExpanded: formula !== undefined, setIsExpanded: () => { } },
207
+ React.createElement(CustomCalculationAction, { formula: formula, setFormula: setFormula, formulaErrorMessage: formulaErrorMessage, forceValidation: forceValidation, disabled: isLoading }))),
208
+ React.createElement(ActionPanel, { onSave: handleSaveClick, onCancel: onClickCancel, onSaveCapture: clearAll, onCancelCapture: clearAll, isLoading: isLoading, isSavingDisabled: !propertyName || dataType === undefined || formulaErrorMessage !== undefined }),
159
209
  React.createElement(GroupsPropertiesSelectionModal, { showModal: showPropertiesSelectionModal, setShowModal: setShowPropertiesSelectionModal, selectedProperties: selectedProperties, setSelectedProperties: setSelectedProperties, propertiesMetaData: propertiesMetaData }),
160
210
  React.createElement(SaveModal, { onSave: onSave, onClose: handleCloseSaveModal, showSaveModal: showSaveConfirmationModal })));
161
211
  };
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPropertyAction.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyAction.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*--------------------------------------------------------------------------------------------*/\nimport { PropertyValueFormat } from \"@itwin/presentation-common\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport {\n Alert,\n Button,\n Fieldset,\n LabeledInput,\n LabeledSelect,\n Text,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport ActionPanel from \"../../SharedComponents/ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { DataType, QuantityType } from \"@itwin/insights-client\";\nimport type {\n GroupMinimal,\n Property,\n PropertyModify,\n} from \"@itwin/insights-client\";\nimport \"./GroupPropertyAction.scss\";\nimport type { PropertyMetaData } from \"./GroupPropertyUtils\";\nimport {\n convertPresentationFields,\n convertToECProperties,\n fetchPresentationDescriptor,\n findProperties,\n} from \"./GroupPropertyUtils\";\nimport { manufactureKeys } from \"../../../common/viewerUtils\";\nimport { SaveModal } from \"./SaveModal\";\nimport { GroupsPropertiesSelectionModal } from \"./GroupsPropertiesSelectionModal\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { GroupPropertyListItem } from \"./GroupPropertyListItem\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\n\n/**\n * Props for the {@link GroupPropertyAction} component.\n * @public\n */\nexport interface GroupPropertyActionProps {\n mappingId: string;\n group: GroupMinimal;\n groupProperty?: Property;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n}\n\nexport const quantityTypesSelectionOptions: SelectOption<QuantityType | undefined>[] = [\n { value: QuantityType.Area, label: \"Area\" },\n { value: QuantityType.Distance, label: \"Distance\" },\n { value: QuantityType.Force, label: \"Force\" },\n { value: QuantityType.Mass, label: \"Mass\" },\n { value: QuantityType.Monetary, label: \"Monetary\" },\n { value: QuantityType.Time, label: \"Time\" },\n { value: QuantityType.Volume, label: \"Volume\" },\n { value: undefined, label: \"No Quantity Type\" },\n];\n\n/**\n * Component to create or update a group.\n * @public\n */\nexport const GroupPropertyAction = ({\n mappingId,\n group,\n groupProperty,\n onSaveSuccess,\n onClickCancel,\n}: GroupPropertyActionProps) => {\n const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();\n const propertiesClient = usePropertiesClient();\n const [propertyName, setPropertyName] = useState<string>(\"\");\n const [oldPropertyName, setOldPropertyName] = useState<string>(\"\");\n const [dataType, setDataType] = useState<DataType>(DataType.String);\n const [quantityType, setQuantityType] = useState<QuantityType>();\n const [selectedProperties, setSelectedProperties] = useState<PropertyMetaData[]>([]);\n const [propertiesMetaData, setPropertiesMetaData] = useState<PropertyMetaData[]>([]);\n const [propertiesNotFoundAlert, setPropertiesNotFoundAlert] = useState<boolean>(false);\n const [validator, showValidationMessage] = useValidator();\n const [showPropertiesSelectionModal, setShowPropertiesSelectionModal] = useState<boolean>(false);\n const [showSaveConfirmationModal, setShowSaveConfirmationModal] = useState<boolean>(false);\n const queryClient = useQueryClient();\n\n const reset = useCallback(() => {\n setPropertyName(\"\");\n setDataType(DataType.String);\n setSelectedProperties([]);\n }, []);\n\n const fetchPropertiesMetadata = useCallback(async () => {\n if (!iModelConnection) return;\n\n const result = await manufactureKeys(group.query, iModelConnection);\n const descriptor = await fetchPresentationDescriptor(iModelConnection, result);\n\n // Only allow primitives and structs\n const propertyFields = descriptor?.fields.filter(\n (field) =>\n field.type.valueFormat === PropertyValueFormat.Primitive ||\n field.type.valueFormat === PropertyValueFormat.Struct\n ) ?? [];\n\n const propertiesMetaData = convertPresentationFields(propertyFields);\n\n let groupPropertyDetails = null;\n if (groupProperty) {\n const accessToken = await getAccessToken();\n groupPropertyDetails = await propertiesClient.getProperty(\n accessToken,\n mappingId,\n group.id,\n groupProperty.id\n );\n }\n\n return { propertiesMetaData, groupPropertyDetails };\n }, [getAccessToken, group.id, group.query, groupProperty, iModelConnection, mappingId, propertiesClient]);\n\n const { data, isFetching: isLoadingProperties, isSuccess: isLoadingPropertiesSuccessful } = useQuery([\"properties\", iModelId, mappingId, group.id, groupProperty?.id, \"metadata\"], fetchPropertiesMetadata);\n\n useEffect(() => {\n if (isLoadingPropertiesSuccessful && data?.propertiesMetaData) {\n setPropertiesMetaData(data.propertiesMetaData);\n\n if (data.groupPropertyDetails) {\n setPropertyName(data.groupPropertyDetails.propertyName);\n setOldPropertyName(data.groupPropertyDetails.propertyName);\n setDataType(data.groupPropertyDetails.dataType);\n if(data.groupPropertyDetails.quantityType)\n setQuantityType(data.groupPropertyDetails.quantityType);\n\n const properties = findProperties(data.groupPropertyDetails.ecProperties ?? [], data.propertiesMetaData);\n if (properties.length === 0) {\n setPropertiesNotFoundAlert(true);\n }\n\n setSelectedProperties(properties);\n }\n }\n }, [data, isLoadingPropertiesSuccessful]);\n\n const { mutate: onSave, isLoading: isSaving } = useMutation({\n mutationFn: async () => {\n const accessToken = await getAccessToken();\n const newGroupProperty: PropertyModify = {\n propertyName,\n dataType,\n quantityType,\n ecProperties: selectedProperties.map((p) => convertToECProperties(p)).flat(),\n };\n\n return groupProperty\n ? propertiesClient.updateProperty(\n accessToken,\n mappingId,\n group.id,\n groupProperty.id,\n newGroupProperty\n )\n : propertiesClient.createProperty(\n accessToken,\n mappingId,\n group.id,\n newGroupProperty\n );\n },\n onSuccess: async () => {\n onSaveSuccess();\n reset();\n await queryClient.invalidateQueries([\"properties\", iModelId, mappingId, group.id]);\n },\n });\n\n const handleSaveClick = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n if (oldPropertyName !== propertyName && oldPropertyName !== \"\") {\n setShowSaveConfirmationModal(true);\n } else {\n onSave();\n }\n };\n\n const handleCloseSaveModal = () => {\n setShowSaveConfirmationModal(false);\n };\n\n const isLoading = isLoadingProperties || isSaving;\n\n return (\n <>\n <div className='gmw-group-property-action-container'>\n <Fieldset disabled={isLoading} className='gmw-property-options' legend='Property Details'>\n <Text variant='small' as='small' className='gmw-field-legend'>\n Asterisk * indicates mandatory fields.\n </Text>\n <LabeledInput\n id='propertyName'\n label='Property Name'\n value={propertyName}\n required\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"propertyName\");\n }}\n message={validator.message(\n \"propertyName\",\n propertyName,\n NAME_REQUIREMENTS\n )}\n status={\n validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"propertyName\");\n }}\n />\n <LabeledSelect<DataType>\n label={\"Data Type\"}\n id='dataType'\n options={[\n { value: DataType.Boolean, label: \"Boolean\" },\n { value: DataType.Integer, label: \"Integer\" },\n { value: DataType.Double, label: \"Double\" },\n { value: DataType.String, label: \"String\" },\n ]}\n required\n value={dataType}\n onChange={(value) => {\n validator.showMessageFor(\"dataType\");\n setDataType(value);\n }}\n message={validator.message(\"dataType\", propertyName, \"required\")}\n status={\n validator.message(\"dataType\", propertyName, \"required\")\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"dataType\");\n }}\n onShow={() => { }}\n onHide={() => { }}\n />\n <LabeledSelect<QuantityType | undefined>\n label='Quantity Type'\n options={quantityTypesSelectionOptions}\n value={quantityType}\n onChange={setQuantityType}\n onShow={() => { }}\n onHide={() => { }}\n placeholder = 'No Quantity Type'\n />\n </Fieldset>\n {propertiesNotFoundAlert &&\n <Alert type=\"warning\">\n Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new selection is made and saved.\n </Alert>\n }\n <Fieldset className='gmw-property-view-container' legend=\"Mapped Properties\">\n <div className=\"gmw-property-view-button\">\n <Button\n onClick={async () => setShowPropertiesSelectionModal(true)}\n disabled={isLoading}\n >\n Select Properties\n </Button>\n </div>\n <div className=\"gmw-properties-list\">\n {selectedProperties.length === 0 && !isLoading ?\n <div className=\"gmw-empty-selection\">\n <Text>No properties selected.</Text>\n <Text>Press the &quot;Select Properties&quot; button for options.</Text>\n </div> :\n selectedProperties.map((property) => (\n <GroupPropertyListItem\n key={property.key}\n content={`${property.displayLabel}`}\n title={`${property.actualECClassName}`}\n description={property.categoryLabel}\n />\n ))}\n </div>\n </Fieldset>\n </div>\n <ActionPanel\n onSave={handleSaveClick}\n onCancel={onClickCancel}\n isLoading={isLoading}\n isSavingDisabled={\n selectedProperties.length === 0 || !propertyName || dataType === undefined\n }\n />\n <GroupsPropertiesSelectionModal\n showModal={showPropertiesSelectionModal}\n setShowModal={setShowPropertiesSelectionModal}\n selectedProperties={selectedProperties}\n setSelectedProperties={setSelectedProperties}\n propertiesMetaData={propertiesMetaData}\n />\n <SaveModal\n onSave={onSave}\n onClose={handleCloseSaveModal}\n showSaveModal={showSaveConfirmationModal}\n />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"GroupPropertyAction.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyAction.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 *--------------------------------------------------------------------------------------------*/\nimport { PropertyValueFormat } from \"@itwin/presentation-common\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Alert, Button, Fieldset, Icon, LabeledInput, LabeledSelect, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ActionPanel from \"../../SharedComponents/ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { DataType, QuantityType } from \"@itwin/insights-client\";\nimport type { CalculatedPropertyType, GroupMinimal, Property, PropertyModify } from \"@itwin/insights-client\";\nimport \"./GroupPropertyAction.scss\";\nimport type { PropertyMetaData } from \"./GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties } from \"./GroupPropertyUtils\";\nimport { clearAll, manufactureKeys } from \"../../../common/viewerUtils\";\nimport { SaveModal } from \"./SaveModal\";\nimport { GroupsPropertiesSelectionModal } from \"./GroupsPropertiesSelectionModal\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { GroupPropertyListItem } from \"./GroupPropertyListItem\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\nimport { SvgFunction, SvgLabel, SvgMeasure } from \"@itwin/itwinui-icons-react\";\nimport { CalculatedPropertyActionWithVisuals } from \"../CalculatedProperties/CalculatedPropertyActionWithVisuals\";\nimport { handleError } from \"../../../common/utils\";\nimport { CustomCalculationAction } from \"../CustomCalculations/CustomCalculationAction\";\nimport { usePropertiesQuery } from \"../hooks/usePropertiesQuery\";\nimport { useFormulaValidation } from \"../hooks/useFormulaValidation\";\nimport { ScrollableExpandableBlock } from \"../ScrollableExpandableBlock\";\n\n/**\n * Props for the {@link GroupPropertyAction} component.\n * @public\n */\nexport interface GroupPropertyActionProps {\n mappingId: string;\n group: GroupMinimal;\n groupProperty?: Property;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n}\n\nexport const quantityTypesSelectionOptions: SelectOption<QuantityType | undefined>[] = [\n { value: QuantityType.Area, label: \"Area\" },\n { value: QuantityType.Distance, label: \"Distance\" },\n { value: QuantityType.Force, label: \"Force\" },\n { value: QuantityType.Mass, label: \"Mass\" },\n { value: QuantityType.Monetary, label: \"Monetary\" },\n { value: QuantityType.Time, label: \"Time\" },\n { value: QuantityType.Volume, label: \"Volume\" },\n { value: undefined, label: \"No Quantity Type\" },\n];\n\n/**\n * Component to create or update a group.\n * @public\n */\nexport const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel }: GroupPropertyActionProps) => {\n const actionContainerRef = useRef<HTMLDivElement>(null);\n const calculatedPropertyActionRef = useRef<HTMLDivElement>(null);\n const customCalculationActionRef = useRef<HTMLDivElement>(null);\n const propertiesClient = usePropertiesClient();\n const queryClient = useQueryClient();\n\n const [propertyName, setPropertyName] = useState<string>(\"\");\n const [oldPropertyName, setOldPropertyName] = useState<string>(\"\");\n const [dataType, setDataType] = useState<DataType>(groupProperty?.dataType ?? DataType.String);\n const [quantityType, setQuantityType] = useState<QuantityType | undefined>(groupProperty?.quantityType ?? undefined);\n const [selectedProperties, setSelectedProperties] = useState<PropertyMetaData[]>([]);\n const [propertiesMetaData, setPropertiesMetaData] = useState<PropertyMetaData[]>([]);\n const [propertiesNotFoundAlert, setPropertiesNotFoundAlert] = useState<boolean>(false);\n const [validator, showValidationMessage] = useValidator();\n const [showPropertiesSelectionModal, setShowPropertiesSelectionModal] = useState<boolean>(false);\n const [showSaveConfirmationModal, setShowSaveConfirmationModal] = useState<boolean>(false);\n const [calculatedPropertyType, setCalculatedPropertyType] = useState<CalculatedPropertyType | undefined>(groupProperty?.calculatedPropertyType ?? undefined);\n const [isCalculatedBlockExpanded, setIsCalculatedBlockExpanded] = useState<boolean>(!!calculatedPropertyType);\n const [formula, setFormula] = useState<string | undefined>(groupProperty?.formula ?? undefined);\n const [formulaErrorMessage, setFormulaErrorMessage] = useState<string | undefined>(undefined);\n\n const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();\n const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, group.id, getAccessToken, propertiesClient);\n const { forceValidation } = useFormulaValidation(propertyName.toLowerCase(), formula, groupProperties?.properties ?? [], setFormulaErrorMessage, dataType);\n\n const reset = useCallback(() => {\n setPropertyName(\"\");\n setDataType(DataType.String);\n setQuantityType(undefined);\n setSelectedProperties([]);\n setCalculatedPropertyType(undefined);\n setFormula(undefined);\n }, []);\n\n const fetchPropertiesMetadata = useCallback(async () => {\n if (!iModelConnection) return;\n\n const result = await manufactureKeys(group.query, iModelConnection);\n const descriptor = await fetchPresentationDescriptor(iModelConnection, result);\n\n // Only allow primitives and structs\n const propertyFields =\n descriptor?.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive || field.type.valueFormat === PropertyValueFormat.Struct) ??\n [];\n\n const propertiesMetaData = convertPresentationFields(propertyFields);\n\n let groupPropertyDetails = null;\n if (groupProperty) {\n const accessToken = await getAccessToken();\n groupPropertyDetails = await propertiesClient.getProperty(accessToken, mappingId, group.id, groupProperty.id);\n }\n\n return { propertiesMetaData, groupPropertyDetails };\n }, [getAccessToken, group.id, group.query, groupProperty, iModelConnection, mappingId, propertiesClient]);\n\n const scrollToFormulaErrorMessage = useCallback(() => {\n setTimeout(() => {\n if (actionContainerRef.current && customCalculationActionRef.current) {\n actionContainerRef.current.scrollTo({\n top: customCalculationActionRef.current.offsetTop,\n behavior: \"smooth\",\n });\n }\n }, 500);\n }, [actionContainerRef]);\n\n const {\n data,\n isFetching: isLoadingProperties,\n isSuccess: isLoadingPropertiesSuccessful,\n } = useQuery([\"properties\", iModelId, mappingId, group.id, groupProperty?.id, \"metadata\"], fetchPropertiesMetadata);\n\n useEffect(() => {\n if (isLoadingPropertiesSuccessful && data?.propertiesMetaData) {\n setPropertiesMetaData(data.propertiesMetaData);\n\n if (data.groupPropertyDetails) {\n setPropertyName(data.groupPropertyDetails.propertyName);\n setOldPropertyName(data.groupPropertyDetails.propertyName);\n setDataType(data.groupPropertyDetails.dataType);\n if (data.groupPropertyDetails.quantityType) setQuantityType(data.groupPropertyDetails.quantityType);\n\n if (data.groupPropertyDetails.ecProperties) {\n const properties = findProperties(data.groupPropertyDetails.ecProperties, data.propertiesMetaData);\n if (properties.length === 0) {\n setPropertiesNotFoundAlert(true);\n }\n setSelectedProperties(properties);\n }\n }\n }\n }, [data, isLoadingPropertiesSuccessful]);\n\n useEffect(() => {\n if (calculatedPropertyType) {\n setDataType(DataType.Double);\n }\n\n if (isCalculatedBlockExpanded === false || !calculatedPropertyType) {\n clearAll();\n }\n }, [calculatedPropertyType, isCalculatedBlockExpanded]);\n\n useEffect(() => {\n if (formulaErrorMessage) {\n scrollToFormulaErrorMessage();\n }\n }, [formulaErrorMessage, scrollToFormulaErrorMessage]);\n\n const { mutate: onSave, isLoading: isSaving } = useMutation({\n mutationFn: async () => {\n const accessToken = await getAccessToken();\n const newGroupProperty: PropertyModify = {\n propertyName,\n dataType,\n quantityType,\n ecProperties: selectedProperties.map((p) => convertToECProperties(p)).flat(),\n calculatedPropertyType,\n formula,\n };\n\n return groupProperty\n ? propertiesClient.updateProperty(accessToken, mappingId, group.id, groupProperty.id, newGroupProperty)\n : propertiesClient.createProperty(accessToken, mappingId, group.id, newGroupProperty);\n },\n onSuccess: async () => {\n onSaveSuccess();\n reset();\n await queryClient.invalidateQueries([\"properties\", iModelId, mappingId, group.id]);\n },\n onError(error: any) {\n handleError(error.status);\n },\n });\n\n const handleSaveClick = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n if (oldPropertyName !== propertyName && oldPropertyName !== \"\") {\n setShowSaveConfirmationModal(true);\n } else {\n onSave();\n }\n };\n\n const handleCloseSaveModal = () => {\n setShowSaveConfirmationModal(false);\n };\n\n const isLoading = isLoadingProperties || isSaving || isLoadingGroupProperties;\n\n return (\n <>\n <div className=\"gmw-group-property-action-container\" ref={actionContainerRef}>\n <Fieldset disabled={isLoading} className=\"gmw-property-options\" legend=\"Property Details\">\n <Text variant=\"small\" as=\"small\" className=\"gmw-field-legend\">\n Asterisk * indicates mandatory fields.\n </Text>\n <LabeledInput\n id=\"propertyName\"\n label=\"Property Name\"\n value={propertyName}\n required\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"propertyName\");\n }}\n message={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS)}\n status={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS) ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"propertyName\");\n }}\n />\n <LabeledSelect<DataType>\n label={\"Data Type\"}\n id=\"dataType\"\n options={[\n { value: DataType.Boolean, label: \"Boolean\" },\n { value: DataType.Integer, label: \"Integer\" },\n { value: DataType.Double, label: \"Double\" },\n { value: DataType.String, label: \"String\" },\n ]}\n required\n value={calculatedPropertyType ? DataType.Double : dataType}\n onChange={(value) => {\n validator.showMessageFor(\"dataType\");\n setDataType(value);\n }}\n message={validator.message(\"dataType\", propertyName, \"required\")}\n status={validator.message(\"dataType\", propertyName, \"required\") ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"dataType\");\n }}\n disabled={calculatedPropertyType ? true : false}\n onShow={() => {}}\n onHide={() => {}}\n />\n <LabeledSelect<QuantityType | undefined>\n label=\"Quantity Type\"\n options={quantityTypesSelectionOptions}\n value={quantityType}\n onChange={setQuantityType}\n onShow={() => {}}\n onHide={() => {}}\n placeholder=\"No Quantity Type\"\n />\n </Fieldset>\n {propertiesNotFoundAlert && (\n <Alert type=\"warning\">\n Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new\n selection is made and saved.\n </Alert>\n )}\n <ScrollableExpandableBlock\n title={\"Mapped Properties\"}\n endIcon={\n <Icon fill={selectedProperties.length > 0 ? \"informational\" : \"default\"}>\n <SvgLabel />\n </Icon>\n }\n isExpanded={selectedProperties.length > 0}\n setIsExpanded={() => {}}\n >\n <div className=\"gmw-property-view-container\">\n <div className=\"gmw-property-view-button\">\n <Button onClick={async () => setShowPropertiesSelectionModal(true)} disabled={isLoading}>\n Select Properties\n </Button>\n </div>\n <div className=\"gmw-properties-list\">\n {selectedProperties.length === 0 && !isLoading ? (\n <div className=\"gmw-empty-selection\">\n <Text>No properties selected.</Text>\n <Text>Press the &quot;Select Properties&quot; button for options.</Text>\n </div>\n ) : (\n selectedProperties.map((property) => (\n <GroupPropertyListItem\n key={property.key}\n content={`${property.displayLabel}`}\n title={`${property.actualECClassName}`}\n description={property.categoryLabel}\n />\n ))\n )}\n </div>\n </div>\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={calculatedPropertyActionRef}\n title={\"Calculated Property\"}\n endIcon={\n <Icon fill={calculatedPropertyType ? \"informational\" : \"default\"}>\n <SvgMeasure />\n </Icon>\n }\n isExpanded={!!calculatedPropertyType}\n setIsExpanded={setIsCalculatedBlockExpanded}\n >\n <CalculatedPropertyActionWithVisuals\n group={group}\n calculatedPropertyType={calculatedPropertyType}\n setCalculatedPropertyType={setCalculatedPropertyType}\n />\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={customCalculationActionRef}\n title={\"Custom Calculation\"}\n endIcon={\n <Icon fill={formula ? \"informational\" : \"default\"}>\n <SvgFunction />\n </Icon>\n }\n isExpanded={formula !== undefined}\n setIsExpanded={() => {}}\n >\n <CustomCalculationAction\n formula={formula}\n setFormula={setFormula}\n formulaErrorMessage={formulaErrorMessage}\n forceValidation={forceValidation}\n disabled={isLoading}\n />\n </ScrollableExpandableBlock>\n </div>\n <ActionPanel\n onSave={handleSaveClick}\n onCancel={onClickCancel}\n onSaveCapture={clearAll}\n onCancelCapture={clearAll}\n isLoading={isLoading}\n isSavingDisabled={!propertyName || dataType === undefined || formulaErrorMessage !== undefined}\n />\n <GroupsPropertiesSelectionModal\n showModal={showPropertiesSelectionModal}\n setShowModal={setShowPropertiesSelectionModal}\n selectedProperties={selectedProperties}\n setSelectedProperties={setSelectedProperties}\n propertiesMetaData={propertiesMetaData}\n />\n <SaveModal onSave={onSave} onClose={handleCloseSaveModal} showSaveModal={showSaveConfirmationModal} />\n </>\n );\n};\n"]}
@@ -40,10 +40,10 @@
40
40
  flex-grow: 1;
41
41
  gap: var(--iui-size-s);
42
42
  min-height: calc(var(--iui-size-3x1) * 2);
43
- padding: var(--iui-size-s) var(--iui-size-m);
44
43
  min-width: 0;
45
44
  .gmw-property-view-button {
46
45
  display: flex;
46
+ margin-bottom: 7.5xp;
47
47
  }
48
48
  }
49
49
 
@@ -52,7 +52,8 @@
52
52
  justify-content: center;
53
53
  align-items: center;
54
54
  flex-direction: column;
55
+ flex: 1;
55
56
  gap: var(--iui-size-s);
56
- padding: var(--iui-size-s) var(--iui-size-m);
57
57
  height: 100%;
58
+ padding-top: var(--iui-size-s);
58
59
  }
@@ -9,5 +9,5 @@ export interface GroupPropertyListItemProps {
9
9
  action?: JSX.Element;
10
10
  dragHandle?: JSX.Element;
11
11
  }
12
- export declare const GroupPropertyListItem: ({ content, title, description, selected, onClick, action, dragHandle, }: GroupPropertyListItemProps) => JSX.Element;
12
+ export declare const GroupPropertyListItem: ({ content, title, description, selected, onClick, action, dragHandle }: GroupPropertyListItemProps) => JSX.Element;
13
13
  //# sourceMappingURL=GroupPropertyListItem.d.ts.map
@@ -1,14 +1,14 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
5
  import React from "react";
6
6
  import { ListItem } from "@itwin/itwinui-react";
7
7
  import "./GroupPropertyListItem.scss";
8
- export const GroupPropertyListItem = ({ content, title, description, selected, onClick, action, dragHandle, }) => React.createElement(ListItem, { active: selected, onClick: onClick, className: "gmw-group-property-list-item", title: title },
8
+ export const GroupPropertyListItem = ({ content, title, description, selected, onClick, action, dragHandle }) => (React.createElement(ListItem, { active: selected, onClick: onClick, className: "gmw-group-property-list-item", title: title },
9
9
  dragHandle,
10
10
  React.createElement(ListItem.Content, null,
11
11
  content,
12
12
  React.createElement(ListItem.Description, null, description)),
13
- action);
13
+ action));
14
14
  //# sourceMappingURL=GroupPropertyListItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPropertyListItem.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyListItem.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,8BAA8B,CAAC;AAYtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,OAAO,EACP,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,MAAM,EACN,UAAU,GACiB,EAAE,EAAE,CAC/B,oBAAC,QAAQ,IACP,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,8BAA8B,EACxC,KAAK,EAAE,KAAK;IACX,UAAU;IACX,oBAAC,QAAQ,CAAC,OAAO;QACd,OAAO;QACR,oBAAC,QAAQ,CAAC,WAAW,QAClB,WAAW,CACS,CACN;IAClB,MAAM,CACE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { ListItem } from \"@itwin/itwinui-react\";\nimport \"./GroupPropertyListItem.scss\";\n\nexport interface GroupPropertyListItemProps {\n content: string;\n title: string;\n description: string;\n selected?: boolean;\n onClick?: () => void;\n action?: JSX.Element;\n dragHandle?: JSX.Element;\n}\n\nexport const GroupPropertyListItem = ({\n content,\n title,\n description,\n selected,\n onClick,\n action,\n dragHandle,\n}: GroupPropertyListItemProps) =>\n <ListItem\n active={selected}\n onClick={onClick}\n className=\"gmw-group-property-list-item\"\n title={title}>\n {dragHandle}\n <ListItem.Content>\n {content}\n <ListItem.Description>\n {description}\n </ListItem.Description>\n </ListItem.Content>\n {action}\n </ListItem>;\n"]}
1
+ {"version":3,"file":"GroupPropertyListItem.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyListItem.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,8BAA8B,CAAC;AAYtC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAA8B,EAAE,EAAE,CAAC,CAC3I,oBAAC,QAAQ,IAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,8BAA8B,EAAC,KAAK,EAAE,KAAK;IAChG,UAAU;IACX,oBAAC,QAAQ,CAAC,OAAO;QACd,OAAO;QACR,oBAAC,QAAQ,CAAC,WAAW,QAAE,WAAW,CAAwB,CACzC;IAClB,MAAM,CACE,CACZ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { ListItem } from \"@itwin/itwinui-react\";\nimport \"./GroupPropertyListItem.scss\";\n\nexport interface GroupPropertyListItemProps {\n content: string;\n title: string;\n description: string;\n selected?: boolean;\n onClick?: () => void;\n action?: JSX.Element;\n dragHandle?: JSX.Element;\n}\n\nexport const GroupPropertyListItem = ({ content, title, description, selected, onClick, action, dragHandle }: GroupPropertyListItemProps) => (\n <ListItem active={selected} onClick={onClick} className=\"gmw-group-property-list-item\" title={title}>\n {dragHandle}\n <ListItem.Content>\n {content}\n <ListItem.Description>{description}</ListItem.Description>\n </ListItem.Content>\n {action}\n </ListItem>\n);\n"]}
@@ -10,5 +10,5 @@ export interface GroupPropertyTableProps {
10
10
  groupProperties: Property[];
11
11
  refresh: () => Promise<void>;
12
12
  }
13
- export declare const GroupPropertyTable: ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, }: GroupPropertyTableProps) => JSX.Element;
13
+ export declare const GroupPropertyTable: ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh }: GroupPropertyTableProps) => JSX.Element;
14
14
  //# sourceMappingURL=GroupPropertyTable.d.ts.map
@@ -1,44 +1,54 @@
1
1
  /*---------------------------------------------------------------------------------------------
2
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
- * See LICENSE.md in the project root for license terms and full copyright notice.
4
- *--------------------------------------------------------------------------------------------*/
5
- import { SvgDelete, SvgEdit, SvgMore, } from "@itwin/itwinui-icons-react";
6
- import { DropdownMenu, IconButton, MenuItem, } from "@itwin/itwinui-react";
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { SvgDelete, SvgEdit, SvgFunction, SvgLabel, SvgMeasure, SvgMore } from "@itwin/itwinui-icons-react";
6
+ import { DropdownMenu, Flex, Icon, IconButton, MenuItem } from "@itwin/itwinui-react";
7
7
  import React, { useCallback } from "react";
8
8
  import { PropertyNameCell } from "../PropertyNameCell";
9
9
  import { PropertyTable } from "../PropertyTable";
10
10
  import { useGroupingMappingApiConfig } from "../../context/GroupingApiConfigContext";
11
11
  import { useMutation, useQueryClient } from "@tanstack/react-query";
12
12
  import { usePropertiesClient } from "../../context/PropertiesClientContext";
13
- export const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, }) => {
13
+ export const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh }) => {
14
14
  const propertiesClient = usePropertiesClient();
15
15
  const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
16
16
  const queryClient = useQueryClient();
17
17
  const columnsFactory = useCallback((handleShowDeleteModal) => [
18
18
  {
19
19
  id: "propertyName",
20
- Header: "Property",
21
20
  accessor: "propertyName",
22
- Cell: (value) => (React.createElement(PropertyNameCell, { property: value.row.original, onClickModify: onClickModify })),
21
+ Cell: (value) => React.createElement(PropertyNameCell, { property: value.row.original, onClickModify: onClickModify }),
22
+ },
23
+ {
24
+ id: "propertyTypeIcons",
25
+ Cell: (value) => (React.createElement(Flex, { flexDirection: "row", gap: "xs" },
26
+ React.createElement(Icon, { fill: value.row.original.ecProperties ? "informational" : "default" },
27
+ React.createElement(SvgLabel, null)),
28
+ React.createElement(Icon, { fill: value.row.original.calculatedPropertyType ? "informational" : "default" },
29
+ React.createElement(SvgMeasure, null)),
30
+ React.createElement(Icon, { fill: value.row.original.formula ? "informational" : "default" },
31
+ React.createElement(SvgFunction, null)))),
23
32
  },
24
33
  {
25
34
  id: "dropdown",
26
- Header: "",
27
35
  width: 80,
28
36
  Cell: (value) => {
29
37
  return (React.createElement(DropdownMenu, { menuItems: (close) => [
30
- onClickModify ? [
31
- React.createElement(MenuItem, { key: 0, onClick: () => {
32
- onClickModify(value.row.original);
33
- close();
34
- }, icon: React.createElement(SvgEdit, null) }, "Modify"),
35
- ] : [],
38
+ onClickModify
39
+ ? [
40
+ React.createElement(MenuItem, { key: 0, onClick: () => {
41
+ onClickModify(value.row.original);
42
+ close();
43
+ }, icon: React.createElement(SvgEdit, null) }, "Modify"),
44
+ ]
45
+ : [],
36
46
  React.createElement(MenuItem, { key: 1, onClick: () => {
37
47
  handleShowDeleteModal(value.row.original);
38
48
  close();
39
49
  }, icon: React.createElement(SvgDelete, null) }, "Remove"),
40
50
  ].flatMap((p) => p) },
41
- React.createElement(IconButton, { styleType: 'borderless', title: 'Property Options' },
51
+ React.createElement(IconButton, { styleType: "borderless", title: "Property Options" },
42
52
  React.createElement(SvgMore, null))));
43
53
  },
44
54
  },
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPropertyTable.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyTable.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*--------------------------------------------------------------------------------------------*/\nimport {\n SvgDelete,\n SvgEdit,\n SvgMore,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n DropdownMenu,\n IconButton,\n MenuItem,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback } from \"react\";\nimport type { CellProps, Column } from \"react-table\";\nimport type { Property } from \"@itwin/insights-client\";\nimport { PropertyNameCell } from \"../PropertyNameCell\";\nimport { PropertyTable } from \"../PropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\n\nexport interface GroupPropertyTableProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n onClickAdd?: () => void;\n onClickModify?: (value: Property) => void;\n isLoading: boolean;\n groupProperties: Property[];\n refresh: () => Promise<void>;\n}\n\nexport const GroupPropertyTable = ({\n mappingId,\n groupId,\n onClickAdd,\n onClickModify,\n isLoading,\n groupProperties,\n refresh,\n}: GroupPropertyTableProps) => {\n const propertiesClient = usePropertiesClient();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const queryClient = useQueryClient();\n\n const columnsFactory = useCallback(\n (handleShowDeleteModal: (value: Property) => void): Column<Property>[] => [\n {\n id: \"propertyName\",\n Header: \"Property\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<Property>) => (\n <PropertyNameCell\n property={value.row.original}\n onClickModify={onClickModify}\n />\n ),\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<Property>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n onClickModify ? [\n <MenuItem\n key={0}\n onClick={() => {\n onClickModify(value.row.original);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n ] : [],\n <MenuItem\n key={1}\n onClick={() => {\n handleShowDeleteModal(value.row.original);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((p) => p)}\n >\n <IconButton styleType='borderless' title='Property Options'>\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n [onClickModify]\n );\n\n const { mutateAsync: deleteProperty } = useMutation({\n mutationFn: async (propertyId: string) => {\n const accessToken = await getAccessToken();\n await propertiesClient.deleteProperty(\n accessToken,\n mappingId,\n groupId,\n propertyId,\n );\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, groupId] });\n },\n });\n\n return (\n <PropertyTable\n propertyType=\"Group\"\n columnsFactory={columnsFactory}\n data={groupProperties}\n isLoading={isLoading}\n onClickAdd={onClickAdd}\n refreshProperties={refresh}\n deleteProperty={deleteProperty}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"GroupPropertyTable.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyTable.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 *--------------------------------------------------------------------------------------------*/\nimport { SvgDelete, SvgEdit, SvgFunction, SvgLabel, SvgMeasure, SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { DropdownMenu, Flex, Icon, IconButton, MenuItem } from \"@itwin/itwinui-react\";\nimport React, { useCallback } from \"react\";\nimport type { CellProps, Column } from \"react-table\";\nimport type { Property } from \"@itwin/insights-client\";\nimport { PropertyNameCell } from \"../PropertyNameCell\";\nimport { PropertyTable } from \"../PropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\n\nexport interface GroupPropertyTableProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n onClickAdd?: () => void;\n onClickModify?: (value: Property) => void;\n isLoading: boolean;\n groupProperties: Property[];\n refresh: () => Promise<void>;\n}\n\nexport const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh }: GroupPropertyTableProps) => {\n const propertiesClient = usePropertiesClient();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const queryClient = useQueryClient();\n\n const columnsFactory = useCallback(\n (handleShowDeleteModal: (value: Property) => void): Column<Property>[] => [\n {\n id: \"propertyName\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<Property>) => <PropertyNameCell property={value.row.original} onClickModify={onClickModify} />,\n },\n {\n id: \"propertyTypeIcons\",\n Cell: (value: CellProps<Property>) => (\n <Flex flexDirection={\"row\"} gap=\"xs\">\n <Icon fill={value.row.original.ecProperties ? \"informational\" : \"default\"}>\n <SvgLabel />\n </Icon>\n <Icon fill={value.row.original.calculatedPropertyType ? \"informational\" : \"default\"}>\n <SvgMeasure />\n </Icon>\n <Icon fill={value.row.original.formula ? \"informational\" : \"default\"}>\n <SvgFunction />\n </Icon>\n </Flex>\n ),\n },\n {\n id: \"dropdown\",\n width: 80,\n Cell: (value: CellProps<Property>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) =>\n [\n onClickModify\n ? [\n <MenuItem\n key={0}\n onClick={() => {\n onClickModify(value.row.original);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n ]\n : [],\n <MenuItem\n key={1}\n onClick={() => {\n handleShowDeleteModal(value.row.original);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((p) => p)\n }\n >\n <IconButton styleType=\"borderless\" title=\"Property Options\">\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n [onClickModify],\n );\n\n const { mutateAsync: deleteProperty } = useMutation({\n mutationFn: async (propertyId: string) => {\n const accessToken = await getAccessToken();\n await propertiesClient.deleteProperty(accessToken, mappingId, groupId, propertyId);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, groupId] });\n },\n });\n\n return (\n <PropertyTable\n propertyType=\"Group\"\n columnsFactory={columnsFactory}\n data={groupProperties}\n isLoading={isLoading}\n onClickAdd={onClickAdd}\n refreshProperties={refresh}\n deleteProperty={deleteProperty}\n />\n );\n};\n"]}