@itwin/grouping-mapping-widget 0.11.1 → 0.13.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 (355) hide show
  1. package/lib/cjs/grouping-mapping-widget.d.ts +4 -1
  2. package/lib/cjs/grouping-mapping-widget.js +7 -1
  3. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  4. package/lib/cjs/test/WidgetHeader.test.js +3 -3
  5. package/lib/cjs/test/WidgetHeader.test.js.map +1 -1
  6. package/lib/cjs/widget/components/CalculatedPropertyAction.d.ts +7 -9
  7. package/lib/cjs/widget/components/CalculatedPropertyAction.js +49 -24
  8. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  9. package/lib/cjs/widget/components/CalculatedPropertyTable.d.ts +9 -16
  10. package/lib/cjs/widget/components/CalculatedPropertyTable.js +29 -31
  11. package/lib/cjs/widget/components/CalculatedPropertyTable.js.map +1 -1
  12. package/lib/cjs/widget/components/CalculatedPropertyTable.scss +9 -0
  13. package/lib/cjs/widget/components/ConfirmMappingsImport.js +1 -1
  14. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  15. package/lib/cjs/widget/components/CustomCalculationAction.d.ts +6 -9
  16. package/lib/cjs/widget/components/CustomCalculationAction.js +79 -9
  17. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  18. package/lib/cjs/widget/components/CustomCalculationTable.d.ts +8 -16
  19. package/lib/cjs/widget/components/CustomCalculationTable.js +22 -29
  20. package/lib/cjs/widget/components/CustomCalculationTable.js.map +1 -1
  21. package/lib/cjs/widget/components/DeleteModal.d.ts +4 -5
  22. package/lib/cjs/widget/components/DeleteModal.js +9 -13
  23. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  24. package/lib/cjs/widget/components/GroupAction.js +51 -66
  25. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  26. package/lib/cjs/widget/components/GroupAction.scss +0 -18
  27. package/lib/cjs/widget/components/GroupDetails.d.ts +13 -0
  28. package/lib/cjs/widget/components/GroupDetails.js +34 -0
  29. package/lib/cjs/widget/components/GroupDetails.js.map +1 -0
  30. package/lib/cjs/widget/components/GroupDetailsActionPanel.d.ts +8 -0
  31. package/lib/cjs/widget/components/GroupDetailsActionPanel.js +19 -0
  32. package/lib/cjs/widget/components/GroupDetailsActionPanel.js.map +1 -0
  33. package/lib/cjs/widget/components/GroupDetailsStep.d.ts +13 -0
  34. package/lib/cjs/widget/components/GroupDetailsStep.js +25 -0
  35. package/lib/cjs/widget/components/GroupDetailsStep.js.map +1 -0
  36. package/lib/cjs/widget/components/GroupDetailsStep.scss +11 -0
  37. package/lib/cjs/widget/components/GroupInformationPanel.d.ts +10 -0
  38. package/lib/cjs/widget/components/GroupInformationPanel.js +23 -0
  39. package/lib/cjs/widget/components/GroupInformationPanel.js.map +1 -0
  40. package/lib/cjs/widget/components/GroupInformationPanel.scss +13 -0
  41. package/lib/cjs/widget/components/GroupPropertyAction.d.ts +6 -9
  42. package/lib/cjs/widget/components/GroupPropertyAction.js +26 -15
  43. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  44. package/lib/cjs/widget/components/GroupPropertyTable.d.ts +8 -15
  45. package/lib/cjs/widget/components/GroupPropertyTable.js +23 -28
  46. package/lib/cjs/widget/components/GroupPropertyTable.js.map +1 -1
  47. package/lib/cjs/widget/components/Grouping.d.ts +2 -1
  48. package/lib/cjs/widget/components/Grouping.js +13 -17
  49. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  50. package/lib/cjs/widget/components/Grouping.scss +2 -9
  51. package/lib/cjs/widget/components/GroupingMapping.js +1 -2
  52. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  53. package/lib/cjs/widget/components/GroupingMappingContent.js +8 -4
  54. package/lib/cjs/widget/components/GroupingMappingContent.js.map +1 -1
  55. package/lib/cjs/widget/components/GroupingMappingContext.js +17 -1
  56. package/lib/cjs/widget/components/GroupingMappingContext.js.map +1 -1
  57. package/lib/cjs/widget/components/GroupingMappingHeader.d.ts +1 -2
  58. package/lib/cjs/widget/components/GroupingMappingHeader.js +10 -3
  59. package/lib/cjs/widget/components/GroupingMappingHeader.js.map +1 -1
  60. package/lib/cjs/widget/components/GroupingMappingRouter.js +23 -2
  61. package/lib/cjs/widget/components/GroupingMappingRouter.js.map +1 -1
  62. package/lib/cjs/widget/components/GroupsAddButton.d.ts +9 -0
  63. package/lib/cjs/widget/components/GroupsAddButton.js +17 -0
  64. package/lib/cjs/widget/components/GroupsAddButton.js.map +1 -0
  65. package/lib/cjs/widget/components/GroupsAddButton.scss +7 -0
  66. package/lib/cjs/widget/components/Mapping.js +7 -14
  67. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  68. package/lib/cjs/widget/components/MappingAction.js +1 -1
  69. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  70. package/lib/cjs/widget/components/MappingImportWizardModal.js +1 -1
  71. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  72. package/lib/cjs/widget/components/PropertyAction.d.ts +8 -0
  73. package/lib/cjs/widget/components/PropertyAction.js +100 -0
  74. package/lib/cjs/widget/components/PropertyAction.js.map +1 -0
  75. package/lib/cjs/widget/components/PropertyAction.scss +9 -0
  76. package/lib/cjs/widget/components/PropertyMenu.d.ts +12 -17
  77. package/lib/cjs/widget/components/PropertyMenu.js +52 -155
  78. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  79. package/lib/cjs/widget/components/PropertyMenu.scss +4 -28
  80. package/lib/cjs/widget/components/PropertyNameCell.d.ts +11 -0
  81. package/lib/cjs/widget/components/PropertyNameCell.js +15 -0
  82. package/lib/cjs/widget/components/PropertyNameCell.js.map +1 -0
  83. package/lib/cjs/widget/components/PropertyTable.d.ts +18 -0
  84. package/lib/cjs/widget/components/PropertyTable.js +54 -0
  85. package/lib/cjs/widget/components/PropertyTable.js.map +1 -0
  86. package/lib/cjs/widget/components/PropertyTable.scss +11 -0
  87. package/lib/cjs/widget/components/PropertyTableToolbar.d.ts +10 -0
  88. package/lib/cjs/widget/components/PropertyTableToolbar.js +23 -0
  89. package/lib/cjs/widget/components/PropertyTableToolbar.js.map +1 -0
  90. package/lib/cjs/widget/components/PropertyTableToolbar.scss +12 -0
  91. package/lib/cjs/widget/components/QueryBuilder.d.ts +1 -1
  92. package/lib/cjs/widget/components/QueryBuilder.js +4 -4
  93. package/lib/cjs/widget/components/QueryBuilder.js.map +1 -1
  94. package/lib/cjs/widget/components/QueryBuilderActionPanel.d.ts +6 -0
  95. package/lib/cjs/widget/components/QueryBuilderActionPanel.js +17 -0
  96. package/lib/cjs/widget/components/QueryBuilderActionPanel.js.map +1 -0
  97. package/lib/cjs/widget/components/QueryBuilderCustomUI.d.ts +11 -0
  98. package/lib/cjs/widget/components/QueryBuilderCustomUI.js +27 -0
  99. package/lib/cjs/widget/components/QueryBuilderCustomUI.js.map +1 -0
  100. package/lib/cjs/widget/components/QueryBuilderStep.d.ts +16 -0
  101. package/lib/cjs/widget/components/QueryBuilderStep.js +30 -0
  102. package/lib/cjs/widget/components/QueryBuilderStep.js.map +1 -0
  103. package/lib/cjs/widget/components/QueryBuilderStep.scss +18 -0
  104. package/lib/cjs/widget/components/SelectMappings.js +1 -1
  105. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  106. package/lib/cjs/widget/components/StatusIcon.d.ts +15 -0
  107. package/lib/cjs/widget/components/StatusIcon.js +26 -0
  108. package/lib/cjs/widget/components/StatusIcon.js.map +1 -0
  109. package/lib/cjs/widget/components/StatusIcon.scss +26 -0
  110. package/lib/cjs/widget/components/ToggleGroupVisibility.d.ts +9 -0
  111. package/lib/cjs/widget/components/ToggleGroupVisibility.js +16 -0
  112. package/lib/cjs/widget/components/ToggleGroupVisibility.js.map +1 -0
  113. package/lib/cjs/widget/components/ToggleGroupVisibility.scss +9 -0
  114. package/lib/cjs/widget/components/WidgetHeader.d.ts +9 -0
  115. package/lib/cjs/widget/components/WidgetHeader.js +22 -0
  116. package/lib/cjs/widget/components/WidgetHeader.js.map +1 -0
  117. package/lib/cjs/widget/components/WidgetHeader.scss +36 -0
  118. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.d.ts +6 -1
  119. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
  120. package/lib/cjs/widget/components/context/PropertiesContext.d.ts +15 -0
  121. package/lib/cjs/widget/components/context/PropertiesContext.js +43 -0
  122. package/lib/cjs/widget/components/context/PropertiesContext.js.map +1 -0
  123. package/lib/cjs/widget/components/context/PropertyGridWrapperContext.d.ts +1 -3
  124. package/lib/cjs/widget/components/context/PropertyGridWrapperContext.js +0 -2
  125. package/lib/cjs/widget/components/context/PropertyGridWrapperContext.js.map +1 -1
  126. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  127. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js +51 -32
  128. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  129. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.scss +25 -17
  130. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js +1 -1
  131. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  132. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.scss +1 -0
  133. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js +1 -1
  134. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  135. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.scss +1 -0
  136. package/lib/cjs/widget/components/groupsHelpers.d.ts +6 -3
  137. package/lib/cjs/widget/components/groupsHelpers.js +43 -40
  138. package/lib/cjs/widget/components/groupsHelpers.js.map +1 -1
  139. package/lib/cjs/widget/components/utils.d.ts +1 -7
  140. package/lib/cjs/widget/components/utils.js +1 -9
  141. package/lib/cjs/widget/components/utils.js.map +1 -1
  142. package/lib/cjs/widget/components/utils.scss +0 -29
  143. package/lib/cjs/widget/components/viewerUtils.d.ts +4 -2
  144. package/lib/cjs/widget/components/viewerUtils.js +4 -22
  145. package/lib/cjs/widget/components/viewerUtils.js.map +1 -1
  146. package/lib/cjs/widget/hooks/useFetchData.d.ts +3 -5
  147. package/lib/cjs/widget/hooks/useFetchData.js +9 -7
  148. package/lib/cjs/widget/hooks/useFetchData.js.map +1 -1
  149. package/lib/esm/grouping-mapping-widget.d.ts +4 -1
  150. package/lib/esm/grouping-mapping-widget.js +3 -0
  151. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  152. package/lib/esm/test/WidgetHeader.test.js +1 -1
  153. package/lib/esm/test/WidgetHeader.test.js.map +1 -1
  154. package/lib/esm/widget/components/CalculatedPropertyAction.d.ts +7 -9
  155. package/lib/esm/widget/components/CalculatedPropertyAction.js +50 -27
  156. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  157. package/lib/esm/widget/components/CalculatedPropertyTable.d.ts +9 -16
  158. package/lib/esm/widget/components/CalculatedPropertyTable.js +30 -31
  159. package/lib/esm/widget/components/CalculatedPropertyTable.js.map +1 -1
  160. package/lib/esm/widget/components/CalculatedPropertyTable.scss +9 -0
  161. package/lib/esm/widget/components/ConfirmMappingsImport.js +1 -1
  162. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  163. package/lib/esm/widget/components/CustomCalculationAction.d.ts +6 -9
  164. package/lib/esm/widget/components/CustomCalculationAction.js +79 -11
  165. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  166. package/lib/esm/widget/components/CustomCalculationTable.d.ts +8 -16
  167. package/lib/esm/widget/components/CustomCalculationTable.js +23 -29
  168. package/lib/esm/widget/components/CustomCalculationTable.js.map +1 -1
  169. package/lib/esm/widget/components/DeleteModal.d.ts +4 -5
  170. package/lib/esm/widget/components/DeleteModal.js +9 -13
  171. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  172. package/lib/esm/widget/components/GroupAction.js +54 -69
  173. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  174. package/lib/esm/widget/components/GroupAction.scss +0 -18
  175. package/lib/esm/widget/components/GroupDetails.d.ts +13 -0
  176. package/lib/esm/widget/components/GroupDetails.js +27 -0
  177. package/lib/esm/widget/components/GroupDetails.js.map +1 -0
  178. package/lib/esm/widget/components/GroupDetailsActionPanel.d.ts +8 -0
  179. package/lib/esm/widget/components/GroupDetailsActionPanel.js +12 -0
  180. package/lib/esm/widget/components/GroupDetailsActionPanel.js.map +1 -0
  181. package/lib/esm/widget/components/GroupDetailsStep.d.ts +13 -0
  182. package/lib/esm/widget/components/GroupDetailsStep.js +18 -0
  183. package/lib/esm/widget/components/GroupDetailsStep.js.map +1 -0
  184. package/lib/esm/widget/components/GroupDetailsStep.scss +11 -0
  185. package/lib/esm/widget/components/GroupInformationPanel.d.ts +10 -0
  186. package/lib/esm/widget/components/GroupInformationPanel.js +16 -0
  187. package/lib/esm/widget/components/GroupInformationPanel.js.map +1 -0
  188. package/lib/esm/widget/components/GroupInformationPanel.scss +13 -0
  189. package/lib/esm/widget/components/GroupPropertyAction.d.ts +6 -9
  190. package/lib/esm/widget/components/GroupPropertyAction.js +25 -15
  191. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  192. package/lib/esm/widget/components/GroupPropertyTable.d.ts +8 -15
  193. package/lib/esm/widget/components/GroupPropertyTable.js +24 -28
  194. package/lib/esm/widget/components/GroupPropertyTable.js.map +1 -1
  195. package/lib/esm/widget/components/Grouping.d.ts +2 -1
  196. package/lib/esm/widget/components/Grouping.js +15 -19
  197. package/lib/esm/widget/components/Grouping.js.map +1 -1
  198. package/lib/esm/widget/components/Grouping.scss +2 -9
  199. package/lib/esm/widget/components/GroupingMapping.js +1 -2
  200. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  201. package/lib/esm/widget/components/GroupingMappingContent.js +9 -5
  202. package/lib/esm/widget/components/GroupingMappingContent.js.map +1 -1
  203. package/lib/esm/widget/components/GroupingMappingContext.js +17 -1
  204. package/lib/esm/widget/components/GroupingMappingContext.js.map +1 -1
  205. package/lib/esm/widget/components/GroupingMappingHeader.d.ts +1 -2
  206. package/lib/esm/widget/components/GroupingMappingHeader.js +10 -3
  207. package/lib/esm/widget/components/GroupingMappingHeader.js.map +1 -1
  208. package/lib/esm/widget/components/GroupingMappingRouter.js +23 -2
  209. package/lib/esm/widget/components/GroupingMappingRouter.js.map +1 -1
  210. package/lib/esm/widget/components/GroupsAddButton.d.ts +9 -0
  211. package/lib/esm/widget/components/GroupsAddButton.js +10 -0
  212. package/lib/esm/widget/components/GroupsAddButton.js.map +1 -0
  213. package/lib/esm/widget/components/GroupsAddButton.scss +7 -0
  214. package/lib/esm/widget/components/Mapping.js +7 -14
  215. package/lib/esm/widget/components/Mapping.js.map +1 -1
  216. package/lib/esm/widget/components/MappingAction.js +1 -1
  217. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  218. package/lib/esm/widget/components/MappingImportWizardModal.js +1 -1
  219. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  220. package/lib/esm/widget/components/PropertyAction.d.ts +8 -0
  221. package/lib/esm/widget/components/PropertyAction.js +77 -0
  222. package/lib/esm/widget/components/PropertyAction.js.map +1 -0
  223. package/lib/esm/widget/components/PropertyAction.scss +9 -0
  224. package/lib/esm/widget/components/PropertyMenu.d.ts +12 -17
  225. package/lib/esm/widget/components/PropertyMenu.js +54 -154
  226. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  227. package/lib/esm/widget/components/PropertyMenu.scss +4 -28
  228. package/lib/esm/widget/components/PropertyNameCell.d.ts +11 -0
  229. package/lib/esm/widget/components/PropertyNameCell.js +8 -0
  230. package/lib/esm/widget/components/PropertyNameCell.js.map +1 -0
  231. package/lib/esm/widget/components/PropertyTable.d.ts +18 -0
  232. package/lib/esm/widget/components/PropertyTable.js +28 -0
  233. package/lib/esm/widget/components/PropertyTable.js.map +1 -0
  234. package/lib/esm/widget/components/PropertyTable.scss +11 -0
  235. package/lib/esm/widget/components/PropertyTableToolbar.d.ts +10 -0
  236. package/lib/esm/widget/components/PropertyTableToolbar.js +16 -0
  237. package/lib/esm/widget/components/PropertyTableToolbar.js.map +1 -0
  238. package/lib/esm/widget/components/PropertyTableToolbar.scss +12 -0
  239. package/lib/esm/widget/components/QueryBuilder.d.ts +1 -1
  240. package/lib/esm/widget/components/QueryBuilder.js +4 -4
  241. package/lib/esm/widget/components/QueryBuilder.js.map +1 -1
  242. package/lib/esm/widget/components/QueryBuilderActionPanel.d.ts +6 -0
  243. package/lib/esm/widget/components/QueryBuilderActionPanel.js +10 -0
  244. package/lib/esm/widget/components/QueryBuilderActionPanel.js.map +1 -0
  245. package/lib/esm/widget/components/QueryBuilderCustomUI.d.ts +11 -0
  246. package/lib/esm/widget/components/QueryBuilderCustomUI.js +20 -0
  247. package/lib/esm/widget/components/QueryBuilderCustomUI.js.map +1 -0
  248. package/lib/esm/widget/components/QueryBuilderStep.d.ts +16 -0
  249. package/lib/esm/widget/components/QueryBuilderStep.js +23 -0
  250. package/lib/esm/widget/components/QueryBuilderStep.js.map +1 -0
  251. package/lib/esm/widget/components/QueryBuilderStep.scss +18 -0
  252. package/lib/esm/widget/components/SelectMappings.js +1 -1
  253. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  254. package/lib/esm/widget/components/StatusIcon.d.ts +15 -0
  255. package/lib/esm/widget/components/StatusIcon.js +19 -0
  256. package/lib/esm/widget/components/StatusIcon.js.map +1 -0
  257. package/lib/esm/widget/components/StatusIcon.scss +26 -0
  258. package/lib/esm/widget/components/ToggleGroupVisibility.d.ts +9 -0
  259. package/lib/esm/widget/components/ToggleGroupVisibility.js +9 -0
  260. package/lib/esm/widget/components/ToggleGroupVisibility.js.map +1 -0
  261. package/lib/esm/widget/components/ToggleGroupVisibility.scss +9 -0
  262. package/lib/esm/widget/components/WidgetHeader.d.ts +9 -0
  263. package/lib/esm/widget/components/WidgetHeader.js +15 -0
  264. package/lib/esm/widget/components/WidgetHeader.js.map +1 -0
  265. package/lib/esm/widget/components/WidgetHeader.scss +36 -0
  266. package/lib/esm/widget/components/context/GroupHilitedElementsContext.d.ts +6 -1
  267. package/lib/esm/widget/components/context/GroupHilitedElementsContext.js.map +1 -1
  268. package/lib/esm/widget/components/context/PropertiesContext.d.ts +15 -0
  269. package/lib/esm/widget/components/context/PropertiesContext.js +20 -0
  270. package/lib/esm/widget/components/context/PropertiesContext.js.map +1 -0
  271. package/lib/esm/widget/components/context/PropertyGridWrapperContext.d.ts +1 -3
  272. package/lib/esm/widget/components/context/PropertyGridWrapperContext.js +0 -2
  273. package/lib/esm/widget/components/context/PropertyGridWrapperContext.js.map +1 -1
  274. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.d.ts +1 -1
  275. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.js +53 -34
  276. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  277. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.scss +25 -17
  278. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js +2 -2
  279. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  280. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.scss +1 -0
  281. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js +2 -2
  282. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  283. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.scss +1 -0
  284. package/lib/esm/widget/components/groupsHelpers.d.ts +6 -3
  285. package/lib/esm/widget/components/groupsHelpers.js +41 -40
  286. package/lib/esm/widget/components/groupsHelpers.js.map +1 -1
  287. package/lib/esm/widget/components/utils.d.ts +1 -7
  288. package/lib/esm/widget/components/utils.js +0 -7
  289. package/lib/esm/widget/components/utils.js.map +1 -1
  290. package/lib/esm/widget/components/utils.scss +0 -29
  291. package/lib/esm/widget/components/viewerUtils.d.ts +4 -2
  292. package/lib/esm/widget/components/viewerUtils.js +3 -20
  293. package/lib/esm/widget/components/viewerUtils.js.map +1 -1
  294. package/lib/esm/widget/hooks/useFetchData.d.ts +3 -5
  295. package/lib/esm/widget/hooks/useFetchData.js +9 -7
  296. package/lib/esm/widget/hooks/useFetchData.js.map +1 -1
  297. package/package.json +1 -1
  298. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.d.ts +0 -32
  299. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.js +0 -91
  300. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.js.map +0 -1
  301. package/lib/cjs/widget/components/property-grid/PrimitivePropertyRenderer.d.ts +0 -26
  302. package/lib/cjs/widget/components/property-grid/PrimitivePropertyRenderer.js +0 -62
  303. package/lib/cjs/widget/components/property-grid/PrimitivePropertyRenderer.js.map +0 -1
  304. package/lib/cjs/widget/components/property-grid/PropertyGrid.d.ts +0 -67
  305. package/lib/cjs/widget/components/property-grid/PropertyGrid.js +0 -198
  306. package/lib/cjs/widget/components/property-grid/PropertyGrid.js.map +0 -1
  307. package/lib/cjs/widget/components/property-grid/PropertyGrid.scss +0 -71
  308. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.d.ts +0 -23
  309. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js +0 -77
  310. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js.map +0 -1
  311. package/lib/cjs/widget/components/property-grid/PropertyList.d.ts +0 -69
  312. package/lib/cjs/widget/components/property-grid/PropertyList.js +0 -87
  313. package/lib/cjs/widget/components/property-grid/PropertyList.js.map +0 -1
  314. package/lib/cjs/widget/components/property-grid/PropertyRender.d.ts +0 -92
  315. package/lib/cjs/widget/components/property-grid/PropertyRender.js +0 -109
  316. package/lib/cjs/widget/components/property-grid/PropertyRender.js.map +0 -1
  317. package/lib/cjs/widget/components/property-grid/PropertyView.d.ts +0 -22
  318. package/lib/cjs/widget/components/property-grid/PropertyView.js +0 -232
  319. package/lib/cjs/widget/components/property-grid/PropertyView.js.map +0 -1
  320. package/lib/cjs/widget/components/property-grid/PropertyView.scss +0 -77
  321. package/lib/cjs/widget/components/property-grid/countMatchesInString.d.ts +0 -8
  322. package/lib/cjs/widget/components/property-grid/countMatchesInString.js +0 -32
  323. package/lib/cjs/widget/components/property-grid/countMatchesInString.js.map +0 -1
  324. package/lib/cjs/widget/components/property-grid/createNewDisplayValue.d.ts +0 -10
  325. package/lib/cjs/widget/components/property-grid/createNewDisplayValue.js +0 -65
  326. package/lib/cjs/widget/components/property-grid/createNewDisplayValue.js.map +0 -1
  327. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.d.ts +0 -32
  328. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.js +0 -68
  329. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.js.map +0 -1
  330. package/lib/esm/widget/components/property-grid/PrimitivePropertyRenderer.d.ts +0 -26
  331. package/lib/esm/widget/components/property-grid/PrimitivePropertyRenderer.js +0 -39
  332. package/lib/esm/widget/components/property-grid/PrimitivePropertyRenderer.js.map +0 -1
  333. package/lib/esm/widget/components/property-grid/PropertyGrid.d.ts +0 -67
  334. package/lib/esm/widget/components/property-grid/PropertyGrid.js +0 -172
  335. package/lib/esm/widget/components/property-grid/PropertyGrid.js.map +0 -1
  336. package/lib/esm/widget/components/property-grid/PropertyGrid.scss +0 -71
  337. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.d.ts +0 -23
  338. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js +0 -54
  339. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js.map +0 -1
  340. package/lib/esm/widget/components/property-grid/PropertyList.d.ts +0 -69
  341. package/lib/esm/widget/components/property-grid/PropertyList.js +0 -60
  342. package/lib/esm/widget/components/property-grid/PropertyList.js.map +0 -1
  343. package/lib/esm/widget/components/property-grid/PropertyRender.d.ts +0 -92
  344. package/lib/esm/widget/components/property-grid/PropertyRender.js +0 -86
  345. package/lib/esm/widget/components/property-grid/PropertyRender.js.map +0 -1
  346. package/lib/esm/widget/components/property-grid/PropertyView.d.ts +0 -22
  347. package/lib/esm/widget/components/property-grid/PropertyView.js +0 -209
  348. package/lib/esm/widget/components/property-grid/PropertyView.js.map +0 -1
  349. package/lib/esm/widget/components/property-grid/PropertyView.scss +0 -77
  350. package/lib/esm/widget/components/property-grid/countMatchesInString.d.ts +0 -8
  351. package/lib/esm/widget/components/property-grid/countMatchesInString.js +0 -28
  352. package/lib/esm/widget/components/property-grid/countMatchesInString.js.map +0 -1
  353. package/lib/esm/widget/components/property-grid/createNewDisplayValue.d.ts +0 -10
  354. package/lib/esm/widget/components/property-grid/createNewDisplayValue.js +0 -42
  355. package/lib/esm/widget/components/property-grid/createNewDisplayValue.js.map +0 -1
@@ -3,27 +3,34 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { IModelApp } from "@itwin/core-frontend";
6
- import { Fieldset, LabeledInput, LabeledSelect, MenuItem, Small, } from "@itwin/itwinui-react";
6
+ import { Fieldset, LabeledInput, LabeledSelect, MenuItem, Small, ToggleSwitch, } from "@itwin/itwinui-react";
7
7
  import React, { useEffect, useState } from "react";
8
8
  import ActionPanel from "./ActionPanel";
9
9
  import { BboxDimension, BboxDimensionsDecorator, } from "../../decorators/BboxDimensionsDecorator";
10
10
  import useValidator, { NAME_REQUIREMENTS } from "../hooks/useValidator";
11
- import { handleError, WidgetHeader } from "./utils";
12
- import { visualizeElements, zoomToElements } from "./viewerUtils";
11
+ import { handleError } from "./utils";
12
+ import { clearEmphasizedOverriddenElements, visualizeElements, zoomToElements } from "./viewerUtils";
13
13
  import "./CalculatedPropertyAction.scss";
14
14
  import { useMappingClient } from "./context/MappingClientContext";
15
15
  import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
16
16
  import { CalculatedPropertyType } from "@itwin/insights-client";
17
- const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids, returnFn, }) => {
18
- var _a, _b, _c;
19
- const { getAccessToken } = useGroupingMappingApiConfig();
17
+ import { useGroupHilitedElementsContext } from "./context/GroupHilitedElementsContext";
18
+ import { useActiveIModelConnection } from "@itwin/appui-react";
19
+ import { getHiliteIdsAndKeysetFromGroup } from "./groupsHelpers";
20
+ export const CalculatedPropertyAction = ({ mappingId, group, calculatedProperty, onSaveSuccess, onClickCancel, }) => {
21
+ var _a, _b;
22
+ const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
20
23
  const mappingClient = useMappingClient();
21
- const [propertyName, setPropertyName] = useState((_a = property === null || property === void 0 ? void 0 : property.propertyName) !== null && _a !== void 0 ? _a : "");
22
- const [type, setType] = useState((_b = property === null || property === void 0 ? void 0 : property.type) !== null && _b !== void 0 ? _b : CalculatedPropertyType.Undefined);
24
+ const [propertyName, setPropertyName] = useState((_a = calculatedProperty === null || calculatedProperty === void 0 ? void 0 : calculatedProperty.propertyName) !== null && _a !== void 0 ? _a : "");
25
+ const iModelConnection = useActiveIModelConnection();
26
+ const [type, setType] = useState((_b = calculatedProperty === null || calculatedProperty === void 0 ? void 0 : calculatedProperty.type) !== null && _b !== void 0 ? _b : CalculatedPropertyType.Undefined);
23
27
  const [bboxDecorator, setBboxDecorator] = useState();
24
28
  const [isLoading, setIsLoading] = useState(false);
29
+ const { hilitedElementsQueryCache } = useGroupHilitedElementsContext();
25
30
  const [inferredSpatialData, setInferredSpatialData] = useState();
26
31
  const [validator, showValidationMessage] = useValidator();
32
+ const [resolvedHiliteIds, setResolvedHiliteIds] = useState([]);
33
+ const [colorProperty, setColorProperty] = useState(false);
27
34
  useEffect(() => {
28
35
  const decorator = new BboxDimensionsDecorator();
29
36
  IModelApp.viewManager.addDecorator(decorator);
@@ -33,31 +40,45 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
33
40
  };
34
41
  }, []);
35
42
  useEffect(() => {
36
- if (ids.length === 0) {
43
+ const initialize = async () => {
44
+ if (!iModelConnection)
45
+ return;
46
+ clearEmphasizedOverriddenElements();
47
+ if (!colorProperty)
48
+ return;
49
+ setIsLoading(true);
50
+ const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache);
51
+ setResolvedHiliteIds(result.ids);
52
+ setIsLoading(false);
53
+ };
54
+ void initialize();
55
+ }, [iModelConnection, hilitedElementsQueryCache, group, colorProperty]);
56
+ useEffect(() => {
57
+ if (!colorProperty || resolvedHiliteIds.length === 0) {
37
58
  return;
38
59
  }
39
- visualizeElements([ids[0]], "red");
40
- void zoomToElements([ids[0]]);
41
- }, [ids]);
60
+ visualizeElements([resolvedHiliteIds[0]], "red");
61
+ void zoomToElements([resolvedHiliteIds[0]]);
62
+ }, [colorProperty, resolvedHiliteIds]);
42
63
  useEffect(() => {
43
- if (ids.length === 0) {
64
+ if (!colorProperty || resolvedHiliteIds.length === 0) {
44
65
  return;
45
66
  }
46
67
  const setContext = async () => {
47
68
  if (bboxDecorator) {
48
- await bboxDecorator.setContext(ids[0]);
69
+ await bboxDecorator.setContext(resolvedHiliteIds[0]);
49
70
  setInferredSpatialData(bboxDecorator.getInferredSpatialData());
50
71
  }
51
72
  };
52
73
  void setContext();
53
- }, [bboxDecorator, ids]);
74
+ }, [bboxDecorator, colorProperty, resolvedHiliteIds]);
54
75
  useEffect(() => {
55
76
  if (bboxDecorator && type && inferredSpatialData) {
56
- inferredSpatialData.has(BboxDimension[type])
77
+ inferredSpatialData.has(BboxDimension[type]) && colorProperty
57
78
  ? bboxDecorator.drawContext(BboxDimension[type])
58
79
  : bboxDecorator.clearContext();
59
80
  }
60
- }, [bboxDecorator, inferredSpatialData, type]);
81
+ }, [bboxDecorator, colorProperty, inferredSpatialData, type]);
61
82
  const onSave = async () => {
62
83
  if (!validator.allValid()) {
63
84
  showValidationMessage(true);
@@ -66,19 +87,23 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
66
87
  try {
67
88
  setIsLoading(true);
68
89
  const accessToken = await getAccessToken();
69
- property
70
- ? await mappingClient.updateCalculatedProperty(accessToken, iModelId, mappingId, groupId, property.id, {
90
+ calculatedProperty
91
+ ? await mappingClient.updateCalculatedProperty(accessToken, iModelId, mappingId, group.id, calculatedProperty.id, {
71
92
  propertyName,
72
93
  type,
73
94
  })
74
- : await mappingClient.createCalculatedProperty(accessToken, iModelId, mappingId, groupId, {
95
+ : await mappingClient.createCalculatedProperty(accessToken, iModelId, mappingId, group.id, {
75
96
  propertyName,
76
97
  type,
77
98
  });
78
- await returnFn(true);
99
+ onSaveSuccess();
100
+ setPropertyName("");
101
+ setType(CalculatedPropertyType.Undefined);
79
102
  }
80
103
  catch (error) {
81
104
  handleError(error.status);
105
+ }
106
+ finally {
82
107
  setIsLoading(false);
83
108
  }
84
109
  };
@@ -87,12 +112,11 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
87
112
  return (inferredSpatialData === null || inferredSpatialData === void 0 ? void 0 : inferredSpatialData.has(BboxDimension[value])) && (React.createElement("div", null, `${(_a = inferredSpatialData === null || inferredSpatialData === void 0 ? void 0 : inferredSpatialData.get(BboxDimension[value])) === null || _a === void 0 ? void 0 : _a.toPrecision(4)}m`));
88
113
  };
89
114
  return (React.createElement(React.Fragment, null,
90
- React.createElement(WidgetHeader, { title: property
91
- ? `${(_c = property === null || property === void 0 ? void 0 : property.propertyName) !== null && _c !== void 0 ? _c : ""}`
92
- : "Create Calculated Property", returnFn: async () => returnFn(false) }),
93
115
  React.createElement("div", { className: 'gmw-calculated-properties-action-container' },
94
116
  React.createElement(Fieldset, { legend: 'Calculated Property Details', className: 'gmw-details-form' },
95
- React.createElement(Small, { className: 'gmw-field-legend' }, "Asterisk * indicates mandatory fields."),
117
+ React.createElement("div", { className: 'gmw-field-legend-container' },
118
+ React.createElement(Small, { className: 'gmw-field-legend' }, "Asterisk * indicates mandatory fields."),
119
+ React.createElement(ToggleSwitch, { label: 'Visualize Dimensions', labelPosition: 'left', disabled: isLoading, checked: colorProperty, onChange: () => setColorProperty((b) => !b) })),
96
120
  React.createElement(LabeledInput, { value: propertyName, required: true, name: 'name', label: 'Name', onChange: (event) => {
97
121
  setPropertyName(event.target.value);
98
122
  validator.showMessageFor("name");
@@ -142,7 +166,6 @@ const CalculatedPropertyAction = ({ iModelId, mappingId, groupId, property, ids,
142
166
  getSpatialData(option.value)))), selectedItemRenderer: (option) => (React.createElement("div", { className: 'gmw-select-item' },
143
167
  React.createElement("div", null, option.label),
144
168
  getSpatialData(option.value))), onShow: () => { }, onHide: () => { } }))),
145
- React.createElement(ActionPanel, { onSave: onSave, onCancel: async () => returnFn(false), isSavingDisabled: !(type && propertyName), isLoading: isLoading })));
169
+ React.createElement(ActionPanel, { onSave: onSave, onCancel: onClickCancel, isSavingDisabled: !(type && propertyName), isLoading: isLoading })));
146
170
  };
147
- export default CalculatedPropertyAction;
148
171
  //# sourceMappingURL=CalculatedPropertyAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatedPropertyAction.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyAction.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 { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n SelectOption,\n} from \"@itwin/itwinui-react\";\nimport {\n Fieldset,\n LabeledInput,\n LabeledSelect,\n MenuItem,\n Small,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport {\n BboxDimension,\n BboxDimensionsDecorator,\n} from \"../../decorators/BboxDimensionsDecorator\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, WidgetHeader } from \"./utils\";\nimport { visualizeElements, zoomToElements } from \"./viewerUtils\";\nimport \"./CalculatedPropertyAction.scss\";\nimport type { ICalculatedPropertyTyped } from \"./CalculatedPropertyTable\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { CalculatedPropertyType } from \"@itwin/insights-client\";\n\ninterface CalculatedPropertyActionProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n property?: ICalculatedPropertyTyped;\n ids: string[];\n returnFn: (modified: boolean) => Promise<void>;\n}\n\nconst CalculatedPropertyAction = ({\n iModelId,\n mappingId,\n groupId,\n property,\n ids,\n returnFn,\n}: CalculatedPropertyActionProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [propertyName, setPropertyName] = useState<string>(\n property?.propertyName ?? \"\",\n );\n const [type, setType] = useState<CalculatedPropertyType>(property?.type ?? CalculatedPropertyType.Undefined);\n const [bboxDecorator, setBboxDecorator] = useState<BboxDimensionsDecorator | undefined>();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [inferredSpatialData, setInferredSpatialData] = useState<Map<BboxDimension, number> | undefined>();\n const [validator, showValidationMessage] = useValidator();\n\n useEffect(() => {\n const decorator = new BboxDimensionsDecorator();\n IModelApp.viewManager.addDecorator(decorator);\n setBboxDecorator(decorator);\n return () => {\n IModelApp.viewManager.dropDecorator(decorator);\n };\n }, []);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n visualizeElements([ids[0]], \"red\");\n void zoomToElements([ids[0]]);\n }, [ids]);\n\n useEffect(() => {\n if (ids.length === 0) {\n return;\n }\n const setContext = async () => {\n if (bboxDecorator) {\n await bboxDecorator.setContext(ids[0]);\n setInferredSpatialData(bboxDecorator.getInferredSpatialData());\n }\n };\n void setContext();\n }, [bboxDecorator, ids]);\n\n useEffect(() => {\n if (bboxDecorator && type && inferredSpatialData) {\n inferredSpatialData.has(BboxDimension[type as keyof typeof BboxDimension])\n ? bboxDecorator.drawContext(\n BboxDimension[type as keyof typeof BboxDimension],\n )\n : bboxDecorator.clearContext();\n }\n }, [bboxDecorator, inferredSpatialData, type]);\n\n const onSave = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n try {\n setIsLoading(true);\n\n const accessToken = await getAccessToken();\n\n property\n ? await mappingClient.updateCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n groupId,\n property.id,\n {\n propertyName,\n type,\n },\n )\n : await mappingClient.createCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n groupId,\n {\n propertyName,\n type,\n },\n );\n await returnFn(true);\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n const getSpatialData = (value: string) =>\n inferredSpatialData?.has(\n BboxDimension[value as keyof typeof BboxDimension],\n ) && (\n <div>\n {`${inferredSpatialData\n ?.get(BboxDimension[value as keyof typeof BboxDimension])\n ?.toPrecision(4)}m`}\n </div>\n );\n\n return (\n <>\n <WidgetHeader\n title={\n property\n ? `${property?.propertyName ?? \"\"}`\n : \"Create Calculated Property\"\n }\n returnFn={async () => returnFn(false)}\n />\n <div className='gmw-calculated-properties-action-container'>\n <Fieldset legend='Calculated Property Details' className='gmw-details-form'>\n <Small className='gmw-field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n value={propertyName}\n required\n name='name'\n label='Name'\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", propertyName, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", propertyName, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledSelect<CalculatedPropertyType>\n label='Quantity Type'\n required\n options={[\n { value: CalculatedPropertyType.Length, label: \"Length\" },\n { value: CalculatedPropertyType.Area, label: \"Area\" },\n { value: CalculatedPropertyType.Volume, label: \"Volume\" },\n {\n value: CalculatedPropertyType.BoundingBoxLongestEdgeLength,\n label: \"Longest Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxIntermediateEdgeLength,\n label: \"Intermediate Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxShortestEdgeLength,\n label: \"Shortest Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxDiagonalLength,\n label: \"Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxLongestFaceDiagonalLength,\n label: \"Longest Face Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxIntermediateFaceDiagonalLength,\n label: \"Intermediate Face Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxShortestFaceDiagonalLength,\n label: \"Shortest Face Diagonal Length\",\n },\n ]}\n value={type}\n onChange={setType}\n itemRenderer={(option: SelectOption<string>) => (\n <MenuItem>\n <div className='gmw-gr-cp-menu-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n </MenuItem>\n )}\n selectedItemRenderer={(option: SelectOption<string>) => (\n <div className='gmw-select-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n )}\n onShow={() => { }}\n onHide={() => { }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={async () => returnFn(false)}\n isSavingDisabled={!(type && propertyName)}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default CalculatedPropertyAction;\n"]}
1
+ {"version":3,"file":"CalculatedPropertyAction.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyAction.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 { IModelApp } from \"@itwin/core-frontend\";\nimport type {\n SelectOption,\n} from \"@itwin/itwinui-react\";\nimport {\n Fieldset,\n LabeledInput,\n LabeledSelect,\n MenuItem,\n Small,\n ToggleSwitch,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport {\n BboxDimension,\n BboxDimensionsDecorator,\n} from \"../../decorators/BboxDimensionsDecorator\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError } from \"./utils\";\nimport { clearEmphasizedOverriddenElements, visualizeElements, zoomToElements } from \"./viewerUtils\";\nimport \"./CalculatedPropertyAction.scss\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport type { CalculatedProperty, Group } from \"@itwin/insights-client\";\nimport { CalculatedPropertyType } from \"@itwin/insights-client\";\nimport { useGroupHilitedElementsContext } from \"./context/GroupHilitedElementsContext\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport { getHiliteIdsAndKeysetFromGroup } from \"./groupsHelpers\";\n\nexport interface CalculatedPropertyActionProps {\n mappingId: string;\n group: Group;\n calculatedProperty?: CalculatedProperty;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n}\n\nexport const CalculatedPropertyAction = ({\n mappingId,\n group,\n calculatedProperty,\n onSaveSuccess,\n onClickCancel,\n}: CalculatedPropertyActionProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [propertyName, setPropertyName] = useState<string>(\n calculatedProperty?.propertyName ?? \"\",\n );\n const iModelConnection = useActiveIModelConnection();\n const [type, setType] = useState<CalculatedPropertyType>(calculatedProperty?.type ?? CalculatedPropertyType.Undefined);\n const [bboxDecorator, setBboxDecorator] = useState<BboxDimensionsDecorator | undefined>();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const { hilitedElementsQueryCache } = useGroupHilitedElementsContext();\n const [inferredSpatialData, setInferredSpatialData] = useState<Map<BboxDimension, number> | undefined>();\n const [validator, showValidationMessage] = useValidator();\n const [resolvedHiliteIds, setResolvedHiliteIds] = useState<string[]>([]);\n const [colorProperty, setColorProperty] = useState<boolean>(false);\n\n useEffect(() => {\n const decorator = new BboxDimensionsDecorator();\n IModelApp.viewManager.addDecorator(decorator);\n setBboxDecorator(decorator);\n return () => {\n IModelApp.viewManager.dropDecorator(decorator);\n };\n }, []);\n\n useEffect(() => {\n const initialize = async () => {\n if (!iModelConnection) return;\n clearEmphasizedOverriddenElements();\n if (!colorProperty) return;\n setIsLoading(true);\n const result = await getHiliteIdsAndKeysetFromGroup(iModelConnection, group, hilitedElementsQueryCache);\n setResolvedHiliteIds(result.ids);\n setIsLoading(false);\n };\n void initialize();\n }, [iModelConnection, hilitedElementsQueryCache, group, colorProperty]);\n\n useEffect(() => {\n if (!colorProperty || resolvedHiliteIds.length === 0) {\n return;\n }\n visualizeElements([resolvedHiliteIds[0]], \"red\");\n void zoomToElements([resolvedHiliteIds[0]]);\n }, [colorProperty, resolvedHiliteIds]);\n\n useEffect(() => {\n if (!colorProperty || resolvedHiliteIds.length === 0) {\n return;\n }\n const setContext = async () => {\n if (bboxDecorator) {\n await bboxDecorator.setContext(resolvedHiliteIds[0]);\n setInferredSpatialData(bboxDecorator.getInferredSpatialData());\n }\n };\n void setContext();\n }, [bboxDecorator, colorProperty, resolvedHiliteIds]);\n\n useEffect(() => {\n if (bboxDecorator && type && inferredSpatialData) {\n inferredSpatialData.has(BboxDimension[type as keyof typeof BboxDimension]) && colorProperty\n ? bboxDecorator.drawContext(\n BboxDimension[type as keyof typeof BboxDimension],\n )\n : bboxDecorator.clearContext();\n }\n }, [bboxDecorator, colorProperty, inferredSpatialData, type]);\n\n const onSave = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n try {\n setIsLoading(true);\n\n const accessToken = await getAccessToken();\n\n calculatedProperty\n ? await mappingClient.updateCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n group.id,\n calculatedProperty.id,\n {\n propertyName,\n type,\n },\n )\n : await mappingClient.createCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n group.id,\n {\n propertyName,\n type,\n },\n );\n onSaveSuccess();\n setPropertyName(\"\");\n setType(CalculatedPropertyType.Undefined);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n };\n\n const getSpatialData = (value: string) =>\n inferredSpatialData?.has(\n BboxDimension[value as keyof typeof BboxDimension],\n ) && (\n <div>\n {`${inferredSpatialData\n ?.get(BboxDimension[value as keyof typeof BboxDimension])\n ?.toPrecision(4)}m`}\n </div>\n );\n\n return (\n <>\n <div className='gmw-calculated-properties-action-container'>\n <Fieldset legend='Calculated Property Details' className='gmw-details-form'>\n <div className='gmw-field-legend-container'>\n <Small className='gmw-field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <ToggleSwitch\n label='Visualize Dimensions'\n labelPosition='left'\n disabled={isLoading}\n checked={colorProperty}\n onChange={() => setColorProperty((b) => !b)}\n ></ToggleSwitch>\n </div>\n <LabeledInput\n value={propertyName}\n required\n name='name'\n label='Name'\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", propertyName, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", propertyName, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledSelect<CalculatedPropertyType>\n label='Quantity Type'\n required\n options={[\n { value: CalculatedPropertyType.Length, label: \"Length\" },\n { value: CalculatedPropertyType.Area, label: \"Area\" },\n { value: CalculatedPropertyType.Volume, label: \"Volume\" },\n {\n value: CalculatedPropertyType.BoundingBoxLongestEdgeLength,\n label: \"Longest Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxIntermediateEdgeLength,\n label: \"Intermediate Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxShortestEdgeLength,\n label: \"Shortest Edge Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxDiagonalLength,\n label: \"Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxLongestFaceDiagonalLength,\n label: \"Longest Face Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxIntermediateFaceDiagonalLength,\n label: \"Intermediate Face Diagonal Length\",\n },\n {\n value: CalculatedPropertyType.BoundingBoxShortestFaceDiagonalLength,\n label: \"Shortest Face Diagonal Length\",\n },\n ]}\n value={type}\n onChange={setType}\n itemRenderer={(option: SelectOption<string>) => (\n <MenuItem>\n <div className='gmw-gr-cp-menu-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n </MenuItem>\n )}\n selectedItemRenderer={(option: SelectOption<string>) => (\n <div className='gmw-select-item'>\n <div>{option.label}</div>\n {getSpatialData(option.value)}\n </div>\n )}\n onShow={() => { }}\n onHide={() => { }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={onClickCancel}\n isSavingDisabled={!(type && propertyName)}\n isLoading={isLoading}\n />\n </>\n );\n};\n"]}
@@ -1,21 +1,14 @@
1
- import React from "react";
2
- import type { CreateTypeFromInterface } from "../utils";
3
- import { PropertyMenuView } from "./PropertyMenu";
4
- import type { CellProps } from "react-table";
1
+ /// <reference types="react" />
5
2
  import type { CalculatedProperty } from "@itwin/insights-client";
6
- export declare type ICalculatedPropertyTyped = CreateTypeFromInterface<CalculatedProperty>;
7
- interface CalculatedPropertyTableProps {
8
- iModelId: string;
3
+ import "./CalculatedPropertyTable.scss";
4
+ export interface CalculatedPropertyTableProps {
9
5
  mappingId: string;
10
6
  groupId: string;
11
- setSelectedCalculatedProperty: React.Dispatch<React.SetStateAction<ICalculatedPropertyTyped | undefined>>;
12
- setGroupModifyView: React.Dispatch<React.SetStateAction<PropertyMenuView>>;
13
- onCalculatedPropertyModify: (value: CellProps<ICalculatedPropertyTyped>) => void;
14
- isLoadingCalculatedProperties: boolean;
15
- calculatedProperties: ICalculatedPropertyTyped[];
16
- refreshCalculatedProperties: () => Promise<void>;
17
- selectedCalculatedProperty?: ICalculatedPropertyTyped;
7
+ onClickAdd?: () => void;
8
+ onClickModify?: (value: CalculatedProperty) => void;
9
+ isLoading: boolean;
10
+ calculatedProperties: CalculatedProperty[];
11
+ refresh: () => Promise<void>;
18
12
  }
19
- declare const CalculatedPropertyTable: ({ iModelId, mappingId, groupId, setSelectedCalculatedProperty, setGroupModifyView, onCalculatedPropertyModify, isLoadingCalculatedProperties: isLoadingGroupProperties, calculatedProperties, refreshCalculatedProperties, selectedCalculatedProperty, }: CalculatedPropertyTableProps) => JSX.Element;
20
- export default CalculatedPropertyTable;
13
+ export declare const CalculatedPropertyTable: ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, calculatedProperties, refresh, }: CalculatedPropertyTableProps) => JSX.Element;
21
14
  //# sourceMappingURL=CalculatedPropertyTable.d.ts.map
@@ -1,20 +1,19 @@
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 { SvgAdd, SvgDelete, SvgEdit, SvgMore, } from "@itwin/itwinui-icons-react";
6
- import { Button, DropdownMenu, IconButton, MenuItem, Table, } from "@itwin/itwinui-react";
7
- import React, { useMemo, useState } from "react";
8
- import { PropertyMenuView } from "./PropertyMenu";
9
- import DeleteModal from "./DeleteModal";
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";
7
+ import React, { useCallback } from "react";
10
8
  import { useMappingClient } from "./context/MappingClientContext";
9
+ import "./CalculatedPropertyTable.scss";
10
+ import { PropertyNameCell } from "./PropertyNameCell";
11
+ import { PropertyTable } from "./PropertyTable";
11
12
  import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
12
- const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalculatedProperty, setGroupModifyView, onCalculatedPropertyModify, isLoadingCalculatedProperties: isLoadingGroupProperties, calculatedProperties, refreshCalculatedProperties, selectedCalculatedProperty, }) => {
13
- var _a;
14
- const { getAccessToken } = useGroupingMappingApiConfig();
13
+ export const CalculatedPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, calculatedProperties, refresh, }) => {
15
14
  const mappingClient = useMappingClient();
16
- const [showCalculatedPropertyDeleteModal, setShowCalculatedPropertyDeleteModal,] = useState(false);
17
- const calculatedPropertiesColumns = useMemo(() => [
15
+ const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
16
+ const columnsFactory = useCallback((handleShowDeleteModal) => [
18
17
  {
19
18
  Header: "Table",
20
19
  columns: [
@@ -22,7 +21,7 @@ const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalc
22
21
  id: "propertyName",
23
22
  Header: "Calculated Property",
24
23
  accessor: "propertyName",
25
- Cell: (value) => (React.createElement("div", { className: 'iui-anchor', onClick: () => onCalculatedPropertyModify(value) }, value.row.original.propertyName)),
24
+ Cell: (value) => (React.createElement(PropertyNameCell, { property: value.row.original, onClickModify: onClickModify })),
26
25
  },
27
26
  {
28
27
  id: "dropdown",
@@ -30,14 +29,20 @@ const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalc
30
29
  width: 80,
31
30
  Cell: (value) => {
32
31
  return (React.createElement(DropdownMenu, { menuItems: (close) => [
33
- React.createElement(MenuItem, { key: 0, onClick: () => onCalculatedPropertyModify(value), icon: React.createElement(SvgEdit, null) }, "Modify"),
32
+ onClickModify
33
+ ? [
34
+ React.createElement(MenuItem, { key: 0, onClick: () => {
35
+ onClickModify(value.row.original);
36
+ close();
37
+ }, icon: React.createElement(SvgEdit, null) }, "Modify"),
38
+ ]
39
+ : [],
34
40
  React.createElement(MenuItem, { key: 1, onClick: () => {
35
- setSelectedCalculatedProperty(value.row.original);
36
- setShowCalculatedPropertyDeleteModal(true);
41
+ handleShowDeleteModal(value.row.original);
37
42
  close();
38
43
  }, icon: React.createElement(SvgDelete, null) }, "Remove"),
39
- ] },
40
- React.createElement(IconButton, { styleType: 'borderless' },
44
+ ].flatMap((p) => p) },
45
+ React.createElement(IconButton, { styleType: "borderless" },
41
46
  React.createElement(SvgMore, { style: {
42
47
  width: "16px",
43
48
  height: "16px",
@@ -46,17 +51,11 @@ const CalculatedPropertyTable = ({ iModelId, mappingId, groupId, setSelectedCalc
46
51
  },
47
52
  ],
48
53
  },
49
- ], [onCalculatedPropertyModify, setSelectedCalculatedProperty]);
50
- return (React.createElement(React.Fragment, null,
51
- React.createElement(Button, { startIcon: React.createElement(SvgAdd, null), styleType: 'high-visibility', onClick: () => {
52
- setGroupModifyView(PropertyMenuView.ADD_CALCULATED_PROPERTY);
53
- } }, "Add Calculated Property"),
54
- React.createElement(Table, { data: calculatedProperties, density: 'extra-condensed', columns: calculatedPropertiesColumns, emptyTableContent: 'No Calculated Properties', isSortable: true, isLoading: isLoadingGroupProperties }),
55
- React.createElement(DeleteModal, { entityName: (_a = selectedCalculatedProperty === null || selectedCalculatedProperty === void 0 ? void 0 : selectedCalculatedProperty.propertyName) !== null && _a !== void 0 ? _a : "", show: showCalculatedPropertyDeleteModal, setShow: setShowCalculatedPropertyDeleteModal, onDelete: async () => {
56
- var _a;
57
- const accessToken = await getAccessToken();
58
- await mappingClient.deleteCalculatedProperty(accessToken, iModelId, mappingId, groupId, (_a = selectedCalculatedProperty === null || selectedCalculatedProperty === void 0 ? void 0 : selectedCalculatedProperty.id) !== null && _a !== void 0 ? _a : "");
59
- }, refresh: refreshCalculatedProperties })));
54
+ ], [onClickModify]);
55
+ const deleteProperty = useCallback(async (propertyId) => {
56
+ const accessToken = await getAccessToken();
57
+ await mappingClient.deleteCalculatedProperty(accessToken, iModelId, mappingId, groupId, propertyId);
58
+ }, [getAccessToken, groupId, iModelId, mappingClient, mappingId]);
59
+ return (React.createElement(PropertyTable, { propertyType: "Calculated", columnsFactory: columnsFactory, data: calculatedProperties, isLoading: isLoading, onClickAdd: onClickAdd, refreshProperties: refresh, deleteProperty: deleteProperty }));
60
60
  };
61
- export default CalculatedPropertyTable;
62
61
  //# sourceMappingURL=CalculatedPropertyTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalculatedPropertyTable.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyTable.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 SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgMore,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport React, { useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { PropertyMenuView } from \"./PropertyMenu\";\nimport type { CellProps } from \"react-table\";\nimport DeleteModal from \"./DeleteModal\";\nimport type { CalculatedProperty } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type ICalculatedPropertyTyped =\n CreateTypeFromInterface<CalculatedProperty>;\n\ninterface CalculatedPropertyTableProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n setSelectedCalculatedProperty: React.Dispatch<React.SetStateAction<ICalculatedPropertyTyped | undefined>>;\n setGroupModifyView: React.Dispatch<React.SetStateAction<PropertyMenuView>>;\n onCalculatedPropertyModify: (value: CellProps<ICalculatedPropertyTyped>) => void;\n isLoadingCalculatedProperties: boolean;\n calculatedProperties: ICalculatedPropertyTyped[];\n refreshCalculatedProperties: () => Promise<void>;\n selectedCalculatedProperty?: ICalculatedPropertyTyped;\n}\n\nconst CalculatedPropertyTable = ({\n iModelId,\n mappingId,\n groupId,\n setSelectedCalculatedProperty,\n setGroupModifyView,\n onCalculatedPropertyModify,\n isLoadingCalculatedProperties: isLoadingGroupProperties,\n calculatedProperties,\n refreshCalculatedProperties,\n selectedCalculatedProperty,\n}: CalculatedPropertyTableProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [\n showCalculatedPropertyDeleteModal,\n setShowCalculatedPropertyDeleteModal,\n ] = useState<boolean>(false);\n\n const calculatedPropertiesColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"propertyName\",\n Header: \"Calculated Property\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<ICalculatedPropertyTyped>) => (\n <div\n className='iui-anchor'\n onClick={() => onCalculatedPropertyModify(value)}\n >\n {value.row.original.propertyName}\n </div>\n ),\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<ICalculatedPropertyTyped>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => onCalculatedPropertyModify(value)}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n <MenuItem\n key={1}\n onClick={() => {\n setSelectedCalculatedProperty(value.row.original);\n setShowCalculatedPropertyDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ]}\n >\n <IconButton styleType='borderless'>\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [onCalculatedPropertyModify, setSelectedCalculatedProperty],\n );\n\n return (\n <>\n <Button\n startIcon={<SvgAdd />}\n styleType='high-visibility'\n onClick={() => {\n setGroupModifyView(PropertyMenuView.ADD_CALCULATED_PROPERTY);\n }}\n >\n Add Calculated Property\n </Button>\n <Table<ICalculatedPropertyTyped>\n data={calculatedProperties}\n density='extra-condensed'\n columns={calculatedPropertiesColumns}\n emptyTableContent='No Calculated Properties'\n isSortable\n isLoading={isLoadingGroupProperties}\n />\n\n <DeleteModal\n entityName={selectedCalculatedProperty?.propertyName ?? \"\"}\n show={showCalculatedPropertyDeleteModal}\n setShow={setShowCalculatedPropertyDeleteModal}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n groupId,\n selectedCalculatedProperty?.id ?? \"\",\n );\n }}\n refresh={refreshCalculatedProperties}\n />\n </>\n );\n};\n\nexport default CalculatedPropertyTable;\n"]}
1
+ {"version":3,"file":"CalculatedPropertyTable.js","sourceRoot":"","sources":["../../../../src/widget/components/CalculatedPropertyTable.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, SvgMore } 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 } from \"react-table\";\nimport type { CalculatedProperty } from \"@itwin/insights-client\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport \"./CalculatedPropertyTable.scss\";\nimport { PropertyNameCell } from \"./PropertyNameCell\";\nimport { PropertyTable } from \"./PropertyTable\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport interface CalculatedPropertyTableProps {\n mappingId: string;\n groupId: string;\n onClickAdd?: () => void;\n onClickModify?: (value: CalculatedProperty) => void;\n isLoading: boolean;\n calculatedProperties: CalculatedProperty[];\n refresh: () => Promise<void>;\n}\n\nexport const CalculatedPropertyTable = ({\n mappingId,\n groupId,\n onClickAdd,\n onClickModify,\n isLoading,\n calculatedProperties,\n refresh,\n}: CalculatedPropertyTableProps) => {\n const mappingClient = useMappingClient();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n\n const columnsFactory = useCallback(\n (handleShowDeleteModal: (value: CalculatedProperty) => void) => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"propertyName\",\n Header: \"Calculated Property\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<CalculatedProperty>) => (\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<CalculatedProperty>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) =>\n [\n onClickModify\n ? [\n <MenuItem\n key={0}\n onClick={() => {\n onClickModify(\n value.row.original\n );\n close();\n }\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\">\n <SvgMore\n style={{\n width: \"16px\",\n height: \"16px\",\n }}\n />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n },\n ],\n [onClickModify]\n );\n\n const deleteProperty = useCallback(async (propertyId: string) => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteCalculatedProperty(\n accessToken,\n iModelId,\n mappingId,\n groupId,\n propertyId,\n );\n }, [getAccessToken, groupId, iModelId, mappingClient, mappingId]);\n\n return (\n <PropertyTable\n propertyType=\"Calculated\"\n columnsFactory={columnsFactory}\n data={calculatedProperties}\n isLoading={isLoading}\n onClickAdd={onClickAdd}\n refreshProperties={refresh}\n deleteProperty={deleteProperty}\n />\n );\n};\n"]}
@@ -0,0 +1,9 @@
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
+
6
+ .gmw-field-legend-container {
7
+ display: flex;
8
+ justify-content: space-between;
9
+ }
@@ -20,7 +20,7 @@ const ConfirmMappingImport = ({ sourceiModelId, selectedMappings, importing, set
20
20
  const [currentlyImporting, setCurrentlyImporting] = useState("");
21
21
  const [validator, showValidationMessage] = useValidator();
22
22
  const [errored, setErrored] = useState(false);
23
- const displayStrings = { ...defaultDisplayStrings, ...userDisplayStrings };
23
+ const displayStrings = React.useMemo(() => ({ ...defaultDisplayStrings, ...userDisplayStrings }), [userDisplayStrings]);
24
24
  useEffect(() => {
25
25
  setSelectedMappings((selectedMappings) => selectedMappings.map((mapping) => ({
26
26
  ...mapping,
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmMappingsImport.js","sourceRoot":"","sources":["../../../../src/widget/components/ConfirmMappingsImport.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 Button,\n LabeledInput,\n MiddleTextTruncation,\n ProgressLinear,\n Text,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport type { IMappingTyped } from \"./Mapping\";\nimport \"./ConfirmMappingsImport.scss\";\nimport { SvgStatusSuccessHollow } from \"@itwin/itwinui-icons-react\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError } from \"./utils\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n};\n\ninterface ConfirmMappingImportProps {\n sourceiModelId: string;\n selectedMappings: IMappingTyped[];\n importing: boolean;\n setImporting: React.Dispatch<React.SetStateAction<boolean>>;\n setSelectedMappings: React.Dispatch<React.SetStateAction<IMappingTyped[]>>;\n backFn: () => void;\n onCancel: () => void;\n onFinish: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst ConfirmMappingImport = ({\n sourceiModelId,\n selectedMappings,\n importing,\n setImporting,\n setSelectedMappings,\n backFn,\n onCancel,\n onFinish,\n displayStrings: userDisplayStrings,\n}: ConfirmMappingImportProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const [importCount, setImportCount] = useState<number>(0);\n const [currentlyImporting, setCurrentlyImporting] = useState<string>(\"\");\n const [validator, showValidationMessage] = useValidator();\n const [errored, setErrored] = useState<boolean>(false);\n\n const displayStrings = { ...defaultDisplayStrings, ...userDisplayStrings };\n\n useEffect(() => {\n setSelectedMappings((selectedMappings) =>\n selectedMappings.map((mapping) => ({\n ...mapping,\n mappingName: `${mapping.mappingName}_Copy`,\n })),\n );\n }, [setSelectedMappings]);\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const newState = [...selectedMappings];\n newState[index] = {\n ...newState[index],\n mappingName: e.target.value,\n };\n setSelectedMappings(newState);\n };\n\n const onImport = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setImporting(true);\n try {\n for (const selectedMapping of selectedMappings) {\n setCurrentlyImporting(selectedMapping.mappingName ?? \"\");\n const accessToken = await getAccessToken();\n await mappingClient.copyMapping(\n accessToken,\n sourceiModelId,\n selectedMapping.id ?? \"\",\n {\n targetIModelId: iModelId ?? \"\",\n mappingName: selectedMapping.mappingName ?? \"\",\n },\n );\n setImportCount((importCount) => importCount + 1);\n }\n } catch (error: any) {\n handleError(error);\n setErrored(true);\n }\n };\n\n return (\n <>\n {importing ? (\n <div className='gmw-import-progress-container'>\n <div className='gmw-import-progress-bar'>\n <div className='gmw-import-progress-bar-description'>\n {\n !errored ? importCount !== selectedMappings.length ? (\n <>\n <Text variant='title'>Importing</Text>\n <Text>{`We are currently importing the ${displayStrings.mappings.toLocaleLowerCase()}.`}</Text>\n </>\n ) : (\n <>\n <Text variant='title'>Done!</Text>\n <Text>{`Your imported ${displayStrings.mappings.toLocaleLowerCase()} are ready.`}</Text>\n </>\n ) :\n <>\n <Text variant='title'>Error!</Text>\n <Text>{`Sorry, there was an error importing some or all ${displayStrings.mappings}.`}</Text>\n </>}\n </div>\n <ProgressLinear\n value={(importCount / selectedMappings.length) * 100}\n labels={\n importCount === selectedMappings.length\n ? [\"Import done!\", <SvgStatusSuccessHollow key='0' />]\n : [\n <>\n <Text>Copying</Text>\n <MiddleTextTruncation text={currentlyImporting} />\n </>,\n `${importCount}/${selectedMappings.length}`,\n ]\n }\n status={\n !errored ?\n importCount === selectedMappings.length ? \"positive\" : undefined : \"negative\"\n }\n />\n </div>\n <div className='gmw-import-action-panel'>\n <Button\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={() => {\n setImporting(false);\n setImportCount(0);\n setCurrentlyImporting(\"\");\n setErrored(false);\n }}\n >\n Back\n </Button>\n <Button\n styleType='high-visibility'\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={() => onFinish()}\n >\n Close\n </Button>\n </div>\n </div>\n ) : (\n <div className='gmw-rename-confirm-container '>\n <div className='gmw-mapping-rename-container'>\n <div className='gmw-mapping-row-header-container'>\n <div className='gmw-mapping-row'>\n <Text variant='leading'>{displayStrings.mappings}</Text>\n <Text variant='leading'>Description</Text>\n </div>\n </div>\n <div className='gmw-mapping-row-body'>\n {selectedMappings.map((mapping, index) => (\n <div className='gmw-mapping-row-container' key={mapping.id}>\n <div className='gmw-mapping-row'>\n <LabeledInput\n value={mapping.mappingName}\n name={`mapping_${mapping.id}`}\n required\n onChange={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n message={validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )}\n status={\n validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n onBlurCapture={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n />\n <div>{mapping.description}</div>\n </div>\n <div className='gmw-border-div' />\n </div>\n ))}\n </div>\n </div>\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button styleType='high-visibility' onClick={async () => onImport()}>\n Import\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default ConfirmMappingImport;\n"]}
1
+ {"version":3,"file":"ConfirmMappingsImport.js","sourceRoot":"","sources":["../../../../src/widget/components/ConfirmMappingsImport.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 Button,\n LabeledInput,\n MiddleTextTruncation,\n ProgressLinear,\n Text,\n} from \"@itwin/itwinui-react\";\nimport React, { useEffect, useState } from \"react\";\nimport type { IMappingTyped } from \"./Mapping\";\nimport \"./ConfirmMappingsImport.scss\";\nimport { SvgStatusSuccessHollow } from \"@itwin/itwinui-icons-react\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError } from \"./utils\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nconst defaultDisplayStrings = {\n mappings: \"Mappings\",\n};\n\ninterface ConfirmMappingImportProps {\n sourceiModelId: string;\n selectedMappings: IMappingTyped[];\n importing: boolean;\n setImporting: React.Dispatch<React.SetStateAction<boolean>>;\n setSelectedMappings: React.Dispatch<React.SetStateAction<IMappingTyped[]>>;\n backFn: () => void;\n onCancel: () => void;\n onFinish: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nconst ConfirmMappingImport = ({\n sourceiModelId,\n selectedMappings,\n importing,\n setImporting,\n setSelectedMappings,\n backFn,\n onCancel,\n onFinish,\n displayStrings: userDisplayStrings,\n}: ConfirmMappingImportProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n\n const [importCount, setImportCount] = useState<number>(0);\n const [currentlyImporting, setCurrentlyImporting] = useState<string>(\"\");\n const [validator, showValidationMessage] = useValidator();\n const [errored, setErrored] = useState<boolean>(false);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n useEffect(() => {\n setSelectedMappings((selectedMappings) =>\n selectedMappings.map((mapping) => ({\n ...mapping,\n mappingName: `${mapping.mappingName}_Copy`,\n })),\n );\n }, [setSelectedMappings]);\n\n const handleChange = (\n e: React.ChangeEvent<HTMLInputElement>,\n index: number,\n ) => {\n const newState = [...selectedMappings];\n newState[index] = {\n ...newState[index],\n mappingName: e.target.value,\n };\n setSelectedMappings(newState);\n };\n\n const onImport = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setImporting(true);\n try {\n for (const selectedMapping of selectedMappings) {\n setCurrentlyImporting(selectedMapping.mappingName ?? \"\");\n const accessToken = await getAccessToken();\n await mappingClient.copyMapping(\n accessToken,\n sourceiModelId,\n selectedMapping.id ?? \"\",\n {\n targetIModelId: iModelId ?? \"\",\n mappingName: selectedMapping.mappingName ?? \"\",\n },\n );\n setImportCount((importCount) => importCount + 1);\n }\n } catch (error: any) {\n handleError(error);\n setErrored(true);\n }\n };\n\n return (\n <>\n {importing ? (\n <div className='gmw-import-progress-container'>\n <div className='gmw-import-progress-bar'>\n <div className='gmw-import-progress-bar-description'>\n {\n !errored ? importCount !== selectedMappings.length ? (\n <>\n <Text variant='title'>Importing</Text>\n <Text>{`We are currently importing the ${displayStrings.mappings.toLocaleLowerCase()}.`}</Text>\n </>\n ) : (\n <>\n <Text variant='title'>Done!</Text>\n <Text>{`Your imported ${displayStrings.mappings.toLocaleLowerCase()} are ready.`}</Text>\n </>\n ) :\n <>\n <Text variant='title'>Error!</Text>\n <Text>{`Sorry, there was an error importing some or all ${displayStrings.mappings}.`}</Text>\n </>}\n </div>\n <ProgressLinear\n value={(importCount / selectedMappings.length) * 100}\n labels={\n importCount === selectedMappings.length\n ? [\"Import done!\", <SvgStatusSuccessHollow key='0' />]\n : [\n <>\n <Text>Copying</Text>\n <MiddleTextTruncation text={currentlyImporting} />\n </>,\n `${importCount}/${selectedMappings.length}`,\n ]\n }\n status={\n !errored ?\n importCount === selectedMappings.length ? \"positive\" : undefined : \"negative\"\n }\n />\n </div>\n <div className='gmw-import-action-panel'>\n <Button\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={() => {\n setImporting(false);\n setImportCount(0);\n setCurrentlyImporting(\"\");\n setErrored(false);\n }}\n >\n Back\n </Button>\n <Button\n styleType='high-visibility'\n disabled={!errored && importCount !== selectedMappings.length}\n onClick={() => onFinish()}\n >\n Close\n </Button>\n </div>\n </div>\n ) : (\n <div className='gmw-rename-confirm-container '>\n <div className='gmw-mapping-rename-container'>\n <div className='gmw-mapping-row-header-container'>\n <div className='gmw-mapping-row'>\n <Text variant='leading'>{displayStrings.mappings}</Text>\n <Text variant='leading'>Description</Text>\n </div>\n </div>\n <div className='gmw-mapping-row-body'>\n {selectedMappings.map((mapping, index) => (\n <div className='gmw-mapping-row-container' key={mapping.id}>\n <div className='gmw-mapping-row'>\n <LabeledInput\n value={mapping.mappingName}\n name={`mapping_${mapping.id}`}\n required\n onChange={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n message={validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )}\n status={\n validator.message(\n `mapping_${mapping.id}`,\n mapping.mappingName,\n NAME_REQUIREMENTS,\n )\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n onBlurCapture={(event) => {\n handleChange(event, index);\n validator.showMessageFor(`mapping_${mapping.id}`);\n }}\n />\n <div>{mapping.description}</div>\n </div>\n <div className='gmw-border-div' />\n </div>\n ))}\n </div>\n </div>\n <div className='gmw-import-action-panel'>\n <Button onClick={backFn}>Back</Button>\n <Button styleType='high-visibility' onClick={async () => onImport()}>\n Import\n </Button>\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n )}\n </>\n );\n};\n\nexport default ConfirmMappingImport;\n"]}
@@ -1,16 +1,13 @@
1
1
  /// <reference types="react" />
2
2
  import "./CalculatedPropertyAction.scss";
3
- import type { ICustomCalculationTyped } from "./CustomCalculationTable";
4
3
  import "./CustomCalculationAction.scss";
5
- import type { PropertyMap } from "../../formula/Types";
6
- interface CalculatedPropertyActionProps {
7
- iModelId: string;
4
+ import type { CustomCalculation } from "@itwin/insights-client";
5
+ export interface CustomCalculationActionProps {
8
6
  mappingId: string;
9
7
  groupId: string;
10
- properties: PropertyMap;
11
- customCalculation?: ICustomCalculationTyped;
12
- returnFn: (modified: boolean) => Promise<void>;
8
+ customCalculation?: CustomCalculation;
9
+ onSaveSuccess: () => void;
10
+ onClickCancel?: () => void;
13
11
  }
14
- declare const CustomCalculationAction: ({ iModelId, mappingId, groupId, properties, customCalculation, returnFn, }: CalculatedPropertyActionProps) => JSX.Element;
15
- export default CustomCalculationAction;
12
+ export declare const CustomCalculationAction: ({ mappingId, groupId, customCalculation, onSaveSuccess, onClickCancel, }: CustomCalculationActionProps) => JSX.Element;
16
13
  //# sourceMappingURL=CustomCalculationAction.d.ts.map