@itwin/grouping-mapping-widget 0.16.0 → 0.17.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 (241) hide show
  1. package/lib/cjs/decorators/BboxDimensionsDecorator.js +14 -17
  2. package/lib/cjs/decorators/BboxDimensionsDecorator.js.map +1 -1
  3. package/lib/cjs/formula/FormulaDataTypeResolver.js +1 -2
  4. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  5. package/lib/cjs/formula/FormulaFunctionProvider.js +2 -3
  6. package/lib/cjs/formula/FormulaFunctionProvider.js.map +1 -1
  7. package/lib/cjs/test/GroupingMappingCustomUI.test.js +1 -2
  8. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  9. package/lib/cjs/test/PropertyFieldsHelpers.js +4 -7
  10. package/lib/cjs/test/PropertyFieldsHelpers.js.map +1 -1
  11. package/lib/cjs/test/QueryBuilder.test.js +3 -4
  12. package/lib/cjs/test/QueryBuilder.test.js.map +1 -1
  13. package/lib/cjs/widget/GroupingMappingWidget.d.ts +2 -2
  14. package/lib/cjs/widget/GroupingMappingWidget.js +1 -3
  15. package/lib/cjs/widget/GroupingMappingWidget.js.map +1 -1
  16. package/lib/cjs/widget/components/ActionPanel.scss +2 -3
  17. package/lib/cjs/widget/components/BlockingOverlay.scss +4 -5
  18. package/lib/cjs/widget/components/CalculatedPropertyAction.js +3 -4
  19. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  20. package/lib/cjs/widget/components/CalculatedPropertyAction.scss +1 -2
  21. package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js +6 -8
  22. package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.js.map +1 -1
  23. package/lib/cjs/widget/components/CalculatedPropertyActionWithVisuals.scss +1 -2
  24. package/lib/cjs/widget/components/ConfirmMappingsImport.js +4 -5
  25. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  26. package/lib/cjs/widget/components/ConfirmMappingsImport.scss +7 -8
  27. package/lib/cjs/widget/components/CustomCalculationAction.js +10 -14
  28. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  29. package/lib/cjs/widget/components/CustomCalculationAction.scss +1 -2
  30. package/lib/cjs/widget/components/DeleteModal.js +1 -1
  31. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  32. package/lib/cjs/widget/components/DeleteModal.scss +1 -2
  33. package/lib/cjs/widget/components/GroupAction.js +5 -7
  34. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  35. package/lib/cjs/widget/components/GroupAction.scss +0 -1
  36. package/lib/cjs/widget/components/GroupColorLegend.scss +0 -1
  37. package/lib/cjs/widget/components/GroupColorToggle.d.ts +2 -2
  38. package/lib/cjs/widget/components/GroupColorToggle.js.map +1 -1
  39. package/lib/cjs/widget/components/GroupDetails.js +1 -1
  40. package/lib/cjs/widget/components/GroupDetails.js.map +1 -1
  41. package/lib/cjs/widget/components/GroupDetailsStep.scss +1 -2
  42. package/lib/cjs/widget/components/GroupMenuActions.scss +1 -2
  43. package/lib/cjs/widget/components/GroupPropertyAction.js +5 -6
  44. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  45. package/lib/cjs/widget/components/GroupPropertyAction.scss +13 -16
  46. package/lib/cjs/widget/components/GroupPropertyUtils.js +2 -3
  47. package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
  48. package/lib/cjs/widget/components/Grouping.js +3 -4
  49. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  50. package/lib/cjs/widget/components/Grouping.scss +9 -11
  51. package/lib/cjs/widget/components/GroupingMapping.js +16 -20
  52. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  53. package/lib/cjs/widget/components/GroupingMapping.scss +2 -3
  54. package/lib/cjs/widget/components/GroupingMappingContext.js +9 -13
  55. package/lib/cjs/widget/components/GroupingMappingContext.js.map +1 -1
  56. package/lib/cjs/widget/components/GroupingMappingRouter.js +5 -5
  57. package/lib/cjs/widget/components/GroupingMappingRouter.js.map +1 -1
  58. package/lib/cjs/widget/components/GroupsAddButton.scss +1 -2
  59. package/lib/cjs/widget/components/GroupsVisualization.js +1 -1
  60. package/lib/cjs/widget/components/GroupsVisualization.js.map +1 -1
  61. package/lib/cjs/widget/components/GroupsVisualization.scss +3 -3
  62. package/lib/cjs/widget/components/GroupsVisualizationActions.scss +0 -1
  63. package/lib/cjs/widget/components/HorizontalTile.js +4 -1
  64. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -1
  65. package/lib/cjs/widget/components/HorizontalTile.scss +16 -15
  66. package/lib/cjs/widget/components/Mapping.js +27 -31
  67. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  68. package/lib/cjs/widget/components/Mapping.scss +6 -12
  69. package/lib/cjs/widget/components/MappingAction.js +7 -9
  70. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  71. package/lib/cjs/widget/components/MappingAction.scss +1 -2
  72. package/lib/cjs/widget/components/MappingImportWizardModal.js +3 -2
  73. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  74. package/lib/cjs/widget/components/MappingImportWizardModal.scss +4 -5
  75. package/lib/cjs/widget/components/PropertyAction.js +4 -5
  76. package/lib/cjs/widget/components/PropertyAction.js.map +1 -1
  77. package/lib/cjs/widget/components/PropertyMenu.js +3 -3
  78. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  79. package/lib/cjs/widget/components/PropertyMenu.scss +2 -2
  80. package/lib/cjs/widget/components/PropertyMenuWithVisualization.scss +1 -2
  81. package/lib/cjs/widget/components/PropertyTable.d.ts +1 -1
  82. package/lib/cjs/widget/components/PropertyTable.js +3 -4
  83. package/lib/cjs/widget/components/PropertyTable.js.map +1 -1
  84. package/lib/cjs/widget/components/PropertyTable.scss +1 -2
  85. package/lib/cjs/widget/components/QueryBuilder.js +19 -29
  86. package/lib/cjs/widget/components/QueryBuilder.js.map +1 -1
  87. package/lib/cjs/widget/components/QueryBuilderCustomUI.js +1 -1
  88. package/lib/cjs/widget/components/QueryBuilderCustomUI.js.map +1 -1
  89. package/lib/cjs/widget/components/QueryBuilderStep.scss +1 -2
  90. package/lib/cjs/widget/components/SelectIModel.scss +0 -1
  91. package/lib/cjs/widget/components/SelectITwin.js +1 -1
  92. package/lib/cjs/widget/components/SelectITwin.js.map +1 -1
  93. package/lib/cjs/widget/components/SelectITwin.scss +1 -2
  94. package/lib/cjs/widget/components/SelectMapping.scss +0 -1
  95. package/lib/cjs/widget/components/SortableHorizontalTile.js +2 -1
  96. package/lib/cjs/widget/components/SortableHorizontalTile.js.map +1 -1
  97. package/lib/cjs/widget/components/StatusIcon.d.ts +5 -6
  98. package/lib/cjs/widget/components/StatusIcon.scss +4 -8
  99. package/lib/cjs/widget/components/ToggleGroupVisibility.scss +1 -2
  100. package/lib/cjs/widget/components/WidgetHeader.js +1 -1
  101. package/lib/cjs/widget/components/WidgetHeader.js.map +1 -1
  102. package/lib/cjs/widget/components/WidgetHeader.scss +4 -12
  103. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js +1 -1
  104. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  105. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js +2 -2
  106. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  107. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.scss +1 -2
  108. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js +1 -1
  109. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  110. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.scss +2 -3
  111. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.scss +2 -3
  112. package/lib/cjs/widget/components/groupsHelpers.js +1 -2
  113. package/lib/cjs/widget/components/groupsHelpers.js.map +1 -1
  114. package/lib/cjs/widget/components/utils.scss +1 -4
  115. package/lib/cjs/widget/components/viewerUtils.js +1 -2
  116. package/lib/cjs/widget/components/viewerUtils.js.map +1 -1
  117. package/lib/cjs/widget/hooks/useFetchData.js +1 -1
  118. package/lib/cjs/widget/hooks/useFetchData.js.map +1 -1
  119. package/lib/cjs/widget/hooks/useFormulaValidation.js +1 -2
  120. package/lib/cjs/widget/hooks/useFormulaValidation.js.map +1 -1
  121. package/lib/esm/decorators/BboxDimensionsDecorator.js +14 -17
  122. package/lib/esm/decorators/BboxDimensionsDecorator.js.map +1 -1
  123. package/lib/esm/formula/FormulaDataTypeResolver.js +1 -2
  124. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  125. package/lib/esm/formula/FormulaFunctionProvider.js +2 -3
  126. package/lib/esm/formula/FormulaFunctionProvider.js.map +1 -1
  127. package/lib/esm/test/GroupingMappingCustomUI.test.js +1 -2
  128. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  129. package/lib/esm/test/PropertyFieldsHelpers.js +4 -7
  130. package/lib/esm/test/PropertyFieldsHelpers.js.map +1 -1
  131. package/lib/esm/test/QueryBuilder.test.js +3 -4
  132. package/lib/esm/test/QueryBuilder.test.js.map +1 -1
  133. package/lib/esm/widget/GroupingMappingWidget.d.ts +2 -2
  134. package/lib/esm/widget/GroupingMappingWidget.js +1 -3
  135. package/lib/esm/widget/GroupingMappingWidget.js.map +1 -1
  136. package/lib/esm/widget/components/ActionPanel.scss +2 -3
  137. package/lib/esm/widget/components/BlockingOverlay.scss +4 -5
  138. package/lib/esm/widget/components/CalculatedPropertyAction.js +4 -5
  139. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  140. package/lib/esm/widget/components/CalculatedPropertyAction.scss +1 -2
  141. package/lib/esm/widget/components/CalculatedPropertyActionWithVisuals.js +7 -9
  142. package/lib/esm/widget/components/CalculatedPropertyActionWithVisuals.js.map +1 -1
  143. package/lib/esm/widget/components/CalculatedPropertyActionWithVisuals.scss +1 -2
  144. package/lib/esm/widget/components/ConfirmMappingsImport.js +4 -5
  145. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  146. package/lib/esm/widget/components/ConfirmMappingsImport.scss +7 -8
  147. package/lib/esm/widget/components/CustomCalculationAction.js +11 -15
  148. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  149. package/lib/esm/widget/components/CustomCalculationAction.scss +1 -2
  150. package/lib/esm/widget/components/DeleteModal.js +2 -2
  151. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  152. package/lib/esm/widget/components/DeleteModal.scss +1 -2
  153. package/lib/esm/widget/components/GroupAction.js +5 -7
  154. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  155. package/lib/esm/widget/components/GroupAction.scss +0 -1
  156. package/lib/esm/widget/components/GroupColorLegend.scss +0 -1
  157. package/lib/esm/widget/components/GroupColorToggle.d.ts +2 -2
  158. package/lib/esm/widget/components/GroupColorToggle.js.map +1 -1
  159. package/lib/esm/widget/components/GroupDetails.js +2 -2
  160. package/lib/esm/widget/components/GroupDetails.js.map +1 -1
  161. package/lib/esm/widget/components/GroupDetailsStep.scss +1 -2
  162. package/lib/esm/widget/components/GroupMenuActions.scss +1 -2
  163. package/lib/esm/widget/components/GroupPropertyAction.js +6 -7
  164. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  165. package/lib/esm/widget/components/GroupPropertyAction.scss +13 -16
  166. package/lib/esm/widget/components/GroupPropertyUtils.js +2 -3
  167. package/lib/esm/widget/components/GroupPropertyUtils.js.map +1 -1
  168. package/lib/esm/widget/components/Grouping.js +4 -5
  169. package/lib/esm/widget/components/Grouping.js.map +1 -1
  170. package/lib/esm/widget/components/Grouping.scss +9 -11
  171. package/lib/esm/widget/components/GroupingMapping.js +16 -20
  172. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  173. package/lib/esm/widget/components/GroupingMapping.scss +2 -3
  174. package/lib/esm/widget/components/GroupingMappingContext.js +9 -13
  175. package/lib/esm/widget/components/GroupingMappingContext.js.map +1 -1
  176. package/lib/esm/widget/components/GroupingMappingRouter.js +5 -5
  177. package/lib/esm/widget/components/GroupingMappingRouter.js.map +1 -1
  178. package/lib/esm/widget/components/GroupsAddButton.scss +1 -2
  179. package/lib/esm/widget/components/GroupsVisualization.js +1 -1
  180. package/lib/esm/widget/components/GroupsVisualization.js.map +1 -1
  181. package/lib/esm/widget/components/GroupsVisualization.scss +3 -3
  182. package/lib/esm/widget/components/GroupsVisualizationActions.scss +0 -1
  183. package/lib/esm/widget/components/HorizontalTile.js +5 -2
  184. package/lib/esm/widget/components/HorizontalTile.js.map +1 -1
  185. package/lib/esm/widget/components/HorizontalTile.scss +16 -15
  186. package/lib/esm/widget/components/Mapping.js +28 -32
  187. package/lib/esm/widget/components/Mapping.js.map +1 -1
  188. package/lib/esm/widget/components/Mapping.scss +6 -12
  189. package/lib/esm/widget/components/MappingAction.js +8 -10
  190. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  191. package/lib/esm/widget/components/MappingAction.scss +1 -2
  192. package/lib/esm/widget/components/MappingImportWizardModal.js +3 -2
  193. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  194. package/lib/esm/widget/components/MappingImportWizardModal.scss +4 -5
  195. package/lib/esm/widget/components/PropertyAction.js +4 -5
  196. package/lib/esm/widget/components/PropertyAction.js.map +1 -1
  197. package/lib/esm/widget/components/PropertyMenu.js +3 -3
  198. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  199. package/lib/esm/widget/components/PropertyMenu.scss +2 -2
  200. package/lib/esm/widget/components/PropertyMenuWithVisualization.scss +1 -2
  201. package/lib/esm/widget/components/PropertyTable.d.ts +1 -1
  202. package/lib/esm/widget/components/PropertyTable.js +3 -4
  203. package/lib/esm/widget/components/PropertyTable.js.map +1 -1
  204. package/lib/esm/widget/components/PropertyTable.scss +1 -2
  205. package/lib/esm/widget/components/QueryBuilder.js +19 -29
  206. package/lib/esm/widget/components/QueryBuilder.js.map +1 -1
  207. package/lib/esm/widget/components/QueryBuilderCustomUI.js +1 -1
  208. package/lib/esm/widget/components/QueryBuilderCustomUI.js.map +1 -1
  209. package/lib/esm/widget/components/QueryBuilderStep.scss +1 -2
  210. package/lib/esm/widget/components/SelectIModel.scss +0 -1
  211. package/lib/esm/widget/components/SelectITwin.js +2 -2
  212. package/lib/esm/widget/components/SelectITwin.js.map +1 -1
  213. package/lib/esm/widget/components/SelectITwin.scss +1 -2
  214. package/lib/esm/widget/components/SelectMapping.scss +0 -1
  215. package/lib/esm/widget/components/SortableHorizontalTile.js +2 -1
  216. package/lib/esm/widget/components/SortableHorizontalTile.js.map +1 -1
  217. package/lib/esm/widget/components/StatusIcon.d.ts +5 -6
  218. package/lib/esm/widget/components/StatusIcon.scss +4 -8
  219. package/lib/esm/widget/components/ToggleGroupVisibility.scss +1 -2
  220. package/lib/esm/widget/components/WidgetHeader.js +2 -2
  221. package/lib/esm/widget/components/WidgetHeader.js.map +1 -1
  222. package/lib/esm/widget/components/WidgetHeader.scss +4 -12
  223. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js +1 -1
  224. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  225. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.js +2 -2
  226. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -1
  227. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.scss +1 -2
  228. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js +1 -1
  229. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  230. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.scss +2 -3
  231. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.scss +2 -3
  232. package/lib/esm/widget/components/groupsHelpers.js +1 -2
  233. package/lib/esm/widget/components/groupsHelpers.js.map +1 -1
  234. package/lib/esm/widget/components/utils.scss +1 -4
  235. package/lib/esm/widget/components/viewerUtils.js +1 -2
  236. package/lib/esm/widget/components/viewerUtils.js.map +1 -1
  237. package/lib/esm/widget/hooks/useFetchData.js +1 -1
  238. package/lib/esm/widget/hooks/useFetchData.js.map +1 -1
  239. package/lib/esm/widget/hooks/useFormulaValidation.js +1 -2
  240. package/lib/esm/widget/hooks/useFormulaValidation.js.map +1 -1
  241. package/package.json +32 -30
@@ -14,11 +14,10 @@ export class QueryBuilder {
14
14
  }
15
15
  };
16
16
  this.relationalJoinSegments = (classes, querySegments) => {
17
- var _a;
18
17
  for (const queryClass of classes) {
19
18
  for (const classJoin of queryClass.classJoins) {
20
19
  const querySegment = [
21
- ...(_a = querySegments.get(classJoin.joinClassName)) !== null && _a !== void 0 ? _a : [],
20
+ ...querySegments.get(classJoin.joinClassName) ?? [],
22
21
  `${queryClass.className}.${classJoin.classProperty} = ${classJoin.joinClassName}.${classJoin.joinClassProperty}`,
23
22
  ];
24
23
  querySegments.set(classJoin.joinClassName, querySegment);
@@ -37,14 +36,12 @@ export class QueryBuilder {
37
36
  this.dataProvider = provider;
38
37
  }
39
38
  isCategory(propertyField) {
40
- var _a;
41
- const classInfo = (_a = propertyField.properties[0].property.navigationPropertyInfo) === null || _a === void 0 ? void 0 : _a.classInfo;
42
- return (classInfo === null || classInfo === void 0 ? void 0 : classInfo.name) === "BisCore:GeometricElement3dIsInCategory";
39
+ const classInfo = propertyField.properties[0].property.navigationPropertyInfo?.classInfo;
40
+ return classInfo?.name === "BisCore:GeometricElement3dIsInCategory";
43
41
  }
44
42
  async addProperty(prop) {
45
- var _a;
46
43
  // TODO: only handle primitive properties now
47
- if (((_a = prop.value) === null || _a === void 0 ? void 0 : _a.valueFormat) !== PropertyValueFormat.Primitive) {
44
+ if (prop.value?.valueFormat !== PropertyValueFormat.Primitive) {
48
45
  toaster.warning("Only primitive types are supported for now.");
49
46
  return false;
50
47
  }
@@ -64,8 +61,7 @@ export class QueryBuilder {
64
61
  this._propertyMap.delete(JSON.stringify(propertyField.getFieldDescriptor()));
65
62
  }
66
63
  buildProperty(prop, propertiesField) {
67
- var _a, _b, _c;
68
- if (((_a = prop.value) === null || _a === void 0 ? void 0 : _a.valueFormat) !== PropertyValueFormat.Primitive || prop.value.value === undefined) {
64
+ if (prop.value?.valueFormat !== PropertyValueFormat.Primitive || prop.value.value === undefined) {
69
65
  toaster.negative("Error. An unexpected error has occured while building a query.");
70
66
  return;
71
67
  }
@@ -78,16 +74,13 @@ export class QueryBuilder {
78
74
  String(prop.value.value).indexOf("'") >= 0) {
79
75
  prop.value.value = replaceAll(prop.value.value.toString(), "'", "''");
80
76
  }
81
- const pathToPrimaryClass = (_b = propertiesField.parent) === null || _b === void 0 ? void 0 : _b.pathToPrimaryClass;
77
+ const pathToPrimaryClass = propertiesField.parent?.pathToPrimaryClass;
82
78
  // get the special cases
83
79
  const isNavigation = prop.property.typename.toLowerCase() === "navigation";
84
80
  const isCategory = isNavigation && this.isCategory(propertiesField);
85
- const isAspect = (pathToPrimaryClass === null || pathToPrimaryClass === void 0 ? void 0 : pathToPrimaryClass.find((a) => {
86
- var _a, _b;
87
- return ((_a = a.relationshipInfo) === null || _a === void 0 ? void 0 : _a.name) ===
88
- QueryBuilder.UNIQUE_ASPECT_PRIMARY_CLASS ||
89
- ((_b = a.relationshipInfo) === null || _b === void 0 ? void 0 : _b.name) === QueryBuilder.MULTI_ASPECT_PRIMARY_CLASS;
90
- })) !== undefined;
81
+ const isAspect = pathToPrimaryClass?.find((a) => a.relationshipInfo?.name ===
82
+ QueryBuilder.UNIQUE_ASPECT_PRIMARY_CLASS ||
83
+ a.relationshipInfo?.name === QueryBuilder.MULTI_ASPECT_PRIMARY_CLASS) !== undefined;
91
84
  for (let i = 0; i < propertiesField.properties.length; i++) {
92
85
  const property = propertiesField.properties[i].property;
93
86
  const className = property.classInfo.name.replace(":", ".");
@@ -98,7 +91,7 @@ export class QueryBuilder {
98
91
  : property.name;
99
92
  const propertyValue = isNavigation
100
93
  ? isCategory
101
- ? (_c = prop.value.displayValue) !== null && _c !== void 0 ? _c : ""
94
+ ? prop.value.displayValue ?? ""
102
95
  : prop.value.value.id
103
96
  : prop.value.value;
104
97
  if (!isAspect &&
@@ -118,13 +111,11 @@ export class QueryBuilder {
118
111
  return "string" === typeName || "uri" === typeName;
119
112
  }
120
113
  addRelatedToQuery(unionIndex, propertyField, propertyName, propertyValue) {
121
- var _a, _b;
122
- const paths = [...((_b = (_a = propertyField.parent) === null || _a === void 0 ? void 0 : _a.pathToPrimaryClass) !== null && _b !== void 0 ? _b : [])];
114
+ const paths = [...(propertyField.parent?.pathToPrimaryClass ?? [])];
123
115
  paths.reverse().forEach((path) => {
124
- var _a, _b, _c, _d, _e;
125
- const sourceClassName = (_a = path.sourceClassInfo) === null || _a === void 0 ? void 0 : _a.name.replace(":", ".");
126
- const targetClassName = (_b = path.targetClassInfo) === null || _b === void 0 ? void 0 : _b.name.replace(":", ".");
127
- const relClassName = (_c = path.relationshipInfo) === null || _c === void 0 ? void 0 : _c.name.replace(":", ".");
116
+ const sourceClassName = path.sourceClassInfo?.name.replace(":", ".");
117
+ const targetClassName = path.targetClassInfo?.name.replace(":", ".");
118
+ const relClassName = path.relationshipInfo?.name.replace(":", ".");
128
119
  const relClassProperty = path.isForwardRelationship
129
120
  ? `SourceECInstanceId`
130
121
  : `TargetECInstanceId`;
@@ -133,8 +124,8 @@ export class QueryBuilder {
133
124
  : `SourceECInstanceId`;
134
125
  this.addClassToQuery(unionIndex, targetClassName, `ECInstanceId`, relClassName, relPropertyValue);
135
126
  this.addClassToQuery(unionIndex, relClassName, relClassProperty, sourceClassName, `ECInstanceId`);
136
- if (((_d = path.sourceClassInfo) === null || _d === void 0 ? void 0 : _d.name)
137
- === ((_e = propertyField.parent) === null || _e === void 0 ? void 0 : _e.contentClassInfo.name)) {
127
+ if (path.sourceClassInfo?.name
128
+ === propertyField.parent?.contentClassInfo.name) {
138
129
  this.addPropertyToQuery(unionIndex, sourceClassName, propertyName, propertyValue, this.needsQuote(propertyField), false, false);
139
130
  }
140
131
  });
@@ -192,7 +183,7 @@ export class QueryBuilder {
192
183
  }
193
184
  const foundPropertyClass = this.query.unions[unionIndex].properties.find((p) => p.className === className);
194
185
  if (foundPropertyClass) {
195
- const foundJoin = foundPropertyClass === null || foundPropertyClass === void 0 ? void 0 : foundPropertyClass.classProperties.find((join) => join.name === propertyName);
186
+ const foundJoin = foundPropertyClass?.classProperties.find((join) => join.name === propertyName);
196
187
  if (foundJoin) {
197
188
  foundJoin.value = propertyValue;
198
189
  return;
@@ -203,7 +194,6 @@ export class QueryBuilder {
203
194
  this.query.unions[unionIndex].properties.push(queryProperty);
204
195
  }
205
196
  buildQueryString() {
206
- var _a;
207
197
  this.regenerateQuery();
208
198
  if (this.query === undefined ||
209
199
  (this.query.unions.find((u) => u.classes.length === 0 && u.properties.length === 0))) {
@@ -213,7 +203,7 @@ export class QueryBuilder {
213
203
  for (const union of this.query.unions) {
214
204
  const baseClass = union.classes[0];
215
205
  const baseProperty = union.properties[0];
216
- const baseClassName = baseClass ? baseClass.className : baseProperty === null || baseProperty === void 0 ? void 0 : baseProperty.className;
206
+ const baseClassName = baseClass ? baseClass.className : baseProperty?.className;
217
207
  const baseIdName = `${baseClassName}.ECInstanceId`;
218
208
  const selectClause = this.selectClause(baseProperty, baseClass);
219
209
  let querySegments = new Map();
@@ -238,7 +228,7 @@ export class QueryBuilder {
238
228
  }
239
229
  const joinClauses = [];
240
230
  for (const key of querySegments.keys()) {
241
- joinClauses.push(`JOIN ${key} ON ${(_a = querySegments.get(key)) === null || _a === void 0 ? void 0 : _a.join(" AND ")}`);
231
+ joinClauses.push(`JOIN ${key} ON ${querySegments.get(key)?.join(" AND ")}`);
242
232
  }
243
233
  const whereClause = `WHERE ${whereSegments.join(" AND ")}`;
244
234
  unionSegments.push([selectClause, ...joinClauses, whereClause].join(" "));
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/widget/components/QueryBuilder.ts"],"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 type { PresentationPropertyDataProvider } from \"@itwin/presentation-components\";\nimport type {\n InstanceKey,\n PropertiesField,\n} from \"@itwin/presentation-common\";\nimport type { Primitives, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport { toaster } from \"@itwin/itwinui-react\";\n\nexport interface Query {\n unions: QueryUnion[];\n}\n\nexport interface QueryUnion {\n classes: QueryClass[];\n properties: QueryProperty[];\n}\n\nexport interface QueryClass {\n // schemaName.className\n className: string;\n classJoins: ClassJoin[];\n}\n\nexport interface ClassJoin {\n classProperty: string;\n joinClassName: string;\n joinClassProperty: string;\n}\n\nexport interface QueryProperty {\n className: string;\n classProperties: ClassProperty[];\n isCategory: boolean;\n isAspect: boolean;\n}\n\nexport interface ClassProperty {\n name: string;\n value: Primitives.Value;\n needsQuote: boolean;\n}\n\nexport interface AddedProperty {\n propertyRecord: PropertyRecord;\n propertiesField: PropertiesField;\n}\n\n/* This class is to build adaptive and dynamic query for find similar property selections */\nexport class QueryBuilder {\n private static readonly MULTI_ASPECT_PRIMARY_CLASS =\n \"BisCore:ElementOwnsMultiAspects\";\n private static readonly UNIQUE_ASPECT_PRIMARY_CLASS =\n \"BisCore:ElementOwnsUniqueAspect\";\n private static readonly DEFAULT_DOUBLE_PRECISION = 4;\n\n private dataProvider: PresentationPropertyDataProvider;\n private query: Query | undefined;\n\n constructor(provider: PresentationPropertyDataProvider) {\n this.dataProvider = provider;\n }\n\n private isCategory(propertyField: PropertiesField): boolean {\n const classInfo =\n propertyField.properties[0].property.navigationPropertyInfo?.classInfo;\n return classInfo?.name === \"BisCore:GeometricElement3dIsInCategory\";\n }\n\n private _propertyMap: Map<string, AddedProperty> = new Map();\n\n public resetQueryBuilder = () => {\n this._propertyMap = new Map();\n };\n\n private regenerateQuery = () => {\n this.query = undefined;\n\n for (const property of this._propertyMap.values()) {\n this.buildProperty(property.propertyRecord, property.propertiesField);\n }\n };\n\n public async addProperty(prop: PropertyRecord): Promise<boolean> {\n // TODO: only handle primitive properties now\n if (prop.value?.valueFormat !== PropertyValueFormat.Primitive) {\n toaster.warning(\"Only primitive types are supported for now.\");\n return false;\n }\n if (prop.value.value === undefined) {\n return false;\n }\n\n const propertyField = (await this.dataProvider.getFieldByPropertyRecord(\n prop,\n )) as PropertiesField;\n\n if (!propertyField) {\n toaster.negative(\n \"Error. Failed to fetch field for this property record.\",\n );\n return false;\n }\n\n this._propertyMap.set(JSON.stringify(propertyField.getFieldDescriptor()), { propertyRecord: prop, propertiesField: propertyField });\n return true;\n }\n\n public async removeProperty(prop: PropertyRecord) {\n const propertyField = (await this.dataProvider.getFieldByPropertyRecord(\n prop,\n )) as PropertiesField;\n\n this._propertyMap.delete(JSON.stringify(propertyField.getFieldDescriptor()));\n }\n\n private buildProperty(prop: PropertyRecord, propertiesField: PropertiesField) {\n if (prop.value?.valueFormat !== PropertyValueFormat.Primitive || prop.value.value === undefined) {\n toaster.negative(\n \"Error. An unexpected error has occured while building a query.\",\n );\n return;\n }\n\n function replaceAll(str: string, match: string, replacement: string) {\n return str.split(match).join(replacement);\n }\n // if property value has single quote, escape\n if (\n (typeof prop.value.value === \"string\" ||\n prop.value.value instanceof String) &&\n String(prop.value.value).indexOf(\"'\") >= 0\n ) {\n prop.value.value = replaceAll(prop.value.value.toString(), \"'\", \"''\");\n }\n\n const pathToPrimaryClass = propertiesField.parent?.pathToPrimaryClass;\n\n // get the special cases\n const isNavigation: boolean =\n prop.property.typename.toLowerCase() === \"navigation\";\n const isCategory: boolean = isNavigation && this.isCategory(propertiesField);\n\n const isAspect: boolean =\n pathToPrimaryClass?.find(\n (a) =>\n a.relationshipInfo?.name ===\n QueryBuilder.UNIQUE_ASPECT_PRIMARY_CLASS ||\n a.relationshipInfo?.name === QueryBuilder.MULTI_ASPECT_PRIMARY_CLASS,\n ) !== undefined;\n\n for (let i = 0; i < propertiesField.properties.length; i++) {\n const property = propertiesField.properties[i].property;\n\n const className = property.classInfo.name.replace(\":\", \".\");\n const propertyName = isNavigation\n ? isCategory\n ? `${property.name}.CodeValue`\n : `${property.name}.id`\n : property.name;\n const propertyValue = isNavigation\n ? isCategory\n ? prop.value.displayValue ?? \"\"\n : (prop.value.value as InstanceKey).id\n : prop.value.value;\n\n if (\n !isAspect &&\n pathToPrimaryClass &&\n pathToPrimaryClass.length > 0\n ) {\n this.addRelatedToQuery(\n i,\n propertiesField,\n propertyName,\n propertyValue,\n );\n } else {\n this.addPropertyToQuery(\n i,\n className,\n propertyName,\n propertyValue,\n this.needsQuote(propertiesField),\n isCategory,\n isAspect,\n );\n }\n }\n return true;\n }\n\n private needsQuote(propertyField: PropertiesField): boolean {\n // list of property types that need quote around property value\n const typeName = propertyField.type.typeName.toLowerCase();\n return \"string\" === typeName || \"uri\" === typeName;\n }\n\n private addRelatedToQuery(\n unionIndex: number,\n propertyField: PropertiesField,\n propertyName: string,\n propertyValue: Primitives.Value,\n ) {\n const paths = [...(propertyField.parent?.pathToPrimaryClass ?? [])];\n paths.reverse().forEach((path) => {\n const sourceClassName = path.sourceClassInfo?.name.replace(\":\", \".\");\n const targetClassName = path.targetClassInfo?.name.replace(\":\", \".\");\n const relClassName = path.relationshipInfo?.name.replace(\":\", \".\");\n\n const relClassProperty = path.isForwardRelationship\n ? `SourceECInstanceId`\n : `TargetECInstanceId`;\n\n const relPropertyValue = path.isForwardRelationship\n ? `TargetECInstanceId`\n : `SourceECInstanceId`;\n\n this.addClassToQuery(\n unionIndex,\n targetClassName,\n `ECInstanceId`,\n relClassName,\n relPropertyValue\n );\n\n this.addClassToQuery(\n unionIndex,\n relClassName,\n relClassProperty,\n sourceClassName,\n `ECInstanceId`\n );\n\n if (path.sourceClassInfo?.name\n === propertyField.parent?.contentClassInfo.name) {\n this.addPropertyToQuery(\n unionIndex,\n sourceClassName,\n propertyName,\n propertyValue,\n this.needsQuote(propertyField),\n false,\n false,\n );\n }\n });\n }\n\n private addClassToQuery(\n unionIndex: number,\n className: string,\n classProperty: string,\n joinClassName: string,\n joinClassProperty: string,\n ) {\n if (this.query === undefined) {\n this.query = { unions: [] };\n }\n\n const classJoin: ClassJoin = {\n classProperty,\n joinClassName,\n joinClassProperty,\n };\n\n const queryClass: QueryClass = {\n className,\n classJoins: [classJoin],\n };\n\n if (this.query.unions.length <= unionIndex) {\n this.query.unions.push({\n classes: [queryClass],\n properties: [],\n });\n return;\n }\n\n const foundClass = this.query.unions[unionIndex].classes.find((c) =>\n c.className === className\n );\n\n if (foundClass) {\n const foundJoin = foundClass.classJoins.find((join) =>\n join.classProperty === classProperty && join.joinClassName === joinClassName && join.joinClassProperty === joinClassProperty\n );\n\n if (!foundJoin)\n foundClass.classJoins.push(classJoin);\n return;\n }\n\n this.query.unions[unionIndex].classes.push(queryClass);\n }\n\n private addPropertyToQuery(\n unionIndex: number,\n className: string,\n propertyName: string,\n propertyValue: Primitives.Value,\n needsQuote: boolean,\n isCategory: boolean,\n isAspect: boolean,\n ) {\n if (this.query === undefined) {\n this.query = { unions: [] };\n }\n\n const queryJoin: ClassProperty = {\n name: propertyName,\n value: propertyValue,\n needsQuote,\n };\n\n const queryProperty: QueryProperty = {\n className,\n isCategory,\n isAspect,\n classProperties: [queryJoin],\n };\n\n if (this.query.unions.length <= unionIndex) {\n this.query.unions.push({\n classes: [],\n properties: [queryProperty],\n });\n return;\n }\n\n const foundPropertyClass = this.query.unions[unionIndex].properties.find((p) =>\n p.className === className\n );\n\n if (foundPropertyClass) {\n const foundJoin = foundPropertyClass?.classProperties.find((join) =>\n join.name === propertyName\n );\n\n if (foundJoin) {\n foundJoin.value = propertyValue;\n return;\n }\n\n foundPropertyClass.classProperties.push(queryJoin);\n return;\n }\n\n this.query.unions[unionIndex].properties.push(queryProperty);\n }\n\n public buildQueryString() {\n this.regenerateQuery();\n if (\n this.query === undefined ||\n (this.query.unions.find((u) => u.classes.length === 0 && u.properties.length === 0))\n ) {\n return \"\";\n }\n\n const unionSegments: string[] = [];\n for (const union of this.query.unions) {\n\n const baseClass = union.classes[0];\n const baseProperty = union.properties[0];\n const baseClassName = baseClass ? baseClass.className : baseProperty?.className;\n const baseIdName = `${baseClassName}.ECInstanceId`;\n\n const selectClause = this.selectClause(baseProperty, baseClass);\n\n let querySegments: Map<string, string[]> = new Map();\n querySegments = this.relationalJoinSegments(union.classes, querySegments);\n\n const whereSegments: string[] = [];\n for (const property of union.properties) {\n if (property.isCategory) {\n if (property.className !== baseClassName)\n querySegments.set(\"BisCore.GeometricElement3d\", [`BisCore.GeometricElement3d.ECInstanceId = ${baseIdName}`]);\n\n querySegments.set(\"BisCore.Category\", [`BisCore.Category.ECInstanceId = BisCore.GeometricElement3d.category.id`]);\n whereSegments.push(this.categoryWhereQuery(property.classProperties[0].value.toString()));\n continue;\n }\n\n const joinIdName = property.isAspect\n ? `${property.className}.Element.id`\n : `${property.className}.ECInstanceId`;\n\n if (!querySegments.has(property.className) && property.className !== baseClassName)\n querySegments.set(property.className, [`${joinIdName} = ${baseIdName}`]);\n\n for (const prop of property.classProperties) {\n whereSegments.push(this.propertyQuerySegment(property.className, prop, prop.needsQuote));\n }\n }\n\n const joinClauses: string[] = [];\n for (const key of querySegments.keys()) {\n joinClauses.push(`JOIN ${key} ON ${querySegments.get(key)?.join(\" AND \")}`);\n }\n\n const whereClause = `WHERE ${whereSegments.join(\" AND \")}`;\n\n unionSegments.push([selectClause, ...joinClauses, whereClause].join(\" \"));\n }\n\n return unionSegments.join(\" UNION \");\n }\n\n private selectClause(baseProperty: QueryProperty | undefined, baseClass: QueryClass | undefined) {\n if (baseClass) {\n return `SELECT ${baseClass.className}.ECInstanceId, ${baseClass.className}.ECClassId FROM ${baseClass.className}`;\n }\n\n if (baseProperty) {\n const baseIdName = baseProperty.isAspect\n ? `${baseProperty.className}.Element.id ECInstanceId`\n : `${baseProperty.className}.ECInstanceId, ${baseProperty.className}.ECClassId`;\n\n return `SELECT ${baseIdName} FROM ${baseProperty.className}`;\n }\n\n return \"\";\n }\n\n private relationalJoinSegments = (classes: QueryClass[], querySegments: Map<string, string[]>): Map<string, string[]> => {\n for (const queryClass of classes) {\n for (const classJoin of queryClass.classJoins) {\n const querySegment = [\n ...querySegments.get(classJoin.joinClassName) ?? [],\n `${queryClass.className}.${classJoin.classProperty} = ${classJoin.joinClassName}.${classJoin.joinClassProperty}`,\n ];\n querySegments.set(classJoin.joinClassName, querySegment);\n }\n }\n\n return querySegments;\n };\n\n private propertyQuerySegment = (className: string, property: ClassProperty, needsQuote: boolean): string => {\n if (this.isFloat(property.value))\n return `ROUND(${className}.${property.name}, ` +\n `${QueryBuilder.DEFAULT_DOUBLE_PRECISION}) = ` +\n `${Number(property.value).toFixed(QueryBuilder.DEFAULT_DOUBLE_PRECISION)}`;\n\n const propertyValue = needsQuote ? `'${property.value}'` : property.value;\n return `${className}.${property.name} = ${propertyValue}`;\n };\n\n private categoryWhereQuery(codeValue: string): string {\n return `((BisCore.Category.CodeValue = '${codeValue}') OR (BisCore.Category.UserLabel = '${codeValue}'))`;\n }\n\n private isFloat(n: unknown): boolean {\n return Number(n) === n && n % 1 !== 0;\n }\n}\n"]}
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/widget/components/QueryBuilder.ts"],"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 type { PresentationPropertyDataProvider } from \"@itwin/presentation-components\";\nimport type {\n InstanceKey,\n PropertiesField,\n} from \"@itwin/presentation-common\";\nimport type { Primitives, PropertyRecord } from \"@itwin/appui-abstract\";\nimport { PropertyValueFormat } from \"@itwin/appui-abstract\";\nimport { toaster } from \"@itwin/itwinui-react\";\n\nexport interface Query {\n unions: QueryUnion[];\n}\n\nexport interface QueryUnion {\n classes: QueryClass[];\n properties: QueryProperty[];\n}\n\nexport interface QueryClass {\n // schemaName.className\n className: string;\n classJoins: ClassJoin[];\n}\n\nexport interface ClassJoin {\n classProperty: string;\n joinClassName: string;\n joinClassProperty: string;\n}\n\nexport interface QueryProperty {\n className: string;\n classProperties: ClassProperty[];\n isCategory: boolean;\n isAspect: boolean;\n}\n\nexport interface ClassProperty {\n name: string;\n value: Primitives.Value;\n needsQuote: boolean;\n}\n\nexport interface AddedProperty {\n propertyRecord: PropertyRecord;\n propertiesField: PropertiesField;\n}\n\n/* This class is to build adaptive and dynamic query for find similar property selections */\nexport class QueryBuilder {\n private static readonly MULTI_ASPECT_PRIMARY_CLASS =\n \"BisCore:ElementOwnsMultiAspects\";\n private static readonly UNIQUE_ASPECT_PRIMARY_CLASS =\n \"BisCore:ElementOwnsUniqueAspect\";\n private static readonly DEFAULT_DOUBLE_PRECISION = 4;\n\n private dataProvider: PresentationPropertyDataProvider;\n private query: Query | undefined;\n\n constructor(provider: PresentationPropertyDataProvider) {\n this.dataProvider = provider;\n }\n\n private isCategory(propertyField: PropertiesField): boolean {\n const classInfo =\n propertyField.properties[0].property.navigationPropertyInfo?.classInfo;\n return classInfo?.name === \"BisCore:GeometricElement3dIsInCategory\";\n }\n\n private _propertyMap: Map<string, AddedProperty> = new Map();\n\n public resetQueryBuilder = () => {\n this._propertyMap = new Map();\n };\n\n private regenerateQuery = () => {\n this.query = undefined;\n\n for (const property of this._propertyMap.values()) {\n this.buildProperty(property.propertyRecord, property.propertiesField);\n }\n };\n\n public async addProperty(prop: PropertyRecord): Promise<boolean> {\n // TODO: only handle primitive properties now\n if (prop.value?.valueFormat !== PropertyValueFormat.Primitive) {\n toaster.warning(\"Only primitive types are supported for now.\");\n return false;\n }\n if (prop.value.value === undefined) {\n return false;\n }\n\n const propertyField = (await this.dataProvider.getFieldByPropertyRecord(\n prop,\n )) as PropertiesField;\n\n if (!propertyField) {\n toaster.negative(\n \"Error. Failed to fetch field for this property record.\",\n );\n return false;\n }\n\n this._propertyMap.set(JSON.stringify(propertyField.getFieldDescriptor()), { propertyRecord: prop, propertiesField: propertyField });\n return true;\n }\n\n public async removeProperty(prop: PropertyRecord) {\n const propertyField = (await this.dataProvider.getFieldByPropertyRecord(\n prop,\n )) as PropertiesField;\n\n this._propertyMap.delete(JSON.stringify(propertyField.getFieldDescriptor()));\n }\n\n private buildProperty(prop: PropertyRecord, propertiesField: PropertiesField) {\n if (prop.value?.valueFormat !== PropertyValueFormat.Primitive || prop.value.value === undefined) {\n toaster.negative(\n \"Error. An unexpected error has occured while building a query.\",\n );\n return;\n }\n\n function replaceAll(str: string, match: string, replacement: string) {\n return str.split(match).join(replacement);\n }\n // if property value has single quote, escape\n if (\n (typeof prop.value.value === \"string\" ||\n prop.value.value instanceof String) &&\n String(prop.value.value).indexOf(\"'\") >= 0\n ) {\n prop.value.value = replaceAll(prop.value.value.toString(), \"'\", \"''\");\n }\n\n const pathToPrimaryClass = propertiesField.parent?.pathToPrimaryClass;\n\n // get the special cases\n const isNavigation: boolean =\n prop.property.typename.toLowerCase() === \"navigation\";\n const isCategory: boolean = isNavigation && this.isCategory(propertiesField);\n\n const isAspect: boolean =\n pathToPrimaryClass?.find(\n (a) =>\n a.relationshipInfo?.name ===\n QueryBuilder.UNIQUE_ASPECT_PRIMARY_CLASS ||\n a.relationshipInfo?.name === QueryBuilder.MULTI_ASPECT_PRIMARY_CLASS,\n ) !== undefined;\n\n for (let i = 0; i < propertiesField.properties.length; i++) {\n const property = propertiesField.properties[i].property;\n\n const className = property.classInfo.name.replace(\":\", \".\");\n const propertyName = isNavigation\n ? isCategory\n ? `${property.name}.CodeValue`\n : `${property.name}.id`\n : property.name;\n const propertyValue = isNavigation\n ? isCategory\n ? prop.value.displayValue ?? \"\"\n : (prop.value.value as InstanceKey).id\n : prop.value.value;\n\n if (\n !isAspect &&\n pathToPrimaryClass &&\n pathToPrimaryClass.length > 0\n ) {\n this.addRelatedToQuery(\n i,\n propertiesField,\n propertyName,\n propertyValue,\n );\n } else {\n this.addPropertyToQuery(\n i,\n className,\n propertyName,\n propertyValue,\n this.needsQuote(propertiesField),\n isCategory,\n isAspect,\n );\n }\n }\n return true;\n }\n\n private needsQuote(propertyField: PropertiesField): boolean {\n // list of property types that need quote around property value\n const typeName = propertyField.type.typeName.toLowerCase();\n return \"string\" === typeName || \"uri\" === typeName;\n }\n\n private addRelatedToQuery(\n unionIndex: number,\n propertyField: PropertiesField,\n propertyName: string,\n propertyValue: Primitives.Value,\n ) {\n const paths = [...(propertyField.parent?.pathToPrimaryClass ?? [])];\n paths.reverse().forEach((path) => {\n const sourceClassName = path.sourceClassInfo?.name.replace(\":\", \".\");\n const targetClassName = path.targetClassInfo?.name.replace(\":\", \".\");\n const relClassName = path.relationshipInfo?.name.replace(\":\", \".\");\n\n const relClassProperty = path.isForwardRelationship\n ? `SourceECInstanceId`\n : `TargetECInstanceId`;\n\n const relPropertyValue = path.isForwardRelationship\n ? `TargetECInstanceId`\n : `SourceECInstanceId`;\n\n this.addClassToQuery(\n unionIndex,\n targetClassName,\n `ECInstanceId`,\n relClassName,\n relPropertyValue\n );\n\n this.addClassToQuery(\n unionIndex,\n relClassName,\n relClassProperty,\n sourceClassName,\n `ECInstanceId`\n );\n\n if (path.sourceClassInfo?.name\n === propertyField.parent?.contentClassInfo.name) {\n this.addPropertyToQuery(\n unionIndex,\n sourceClassName,\n propertyName,\n propertyValue,\n this.needsQuote(propertyField),\n false,\n false,\n );\n }\n });\n }\n\n private addClassToQuery(\n unionIndex: number,\n className: string,\n classProperty: string,\n joinClassName: string,\n joinClassProperty: string,\n ) {\n if (this.query === undefined) {\n this.query = { unions: [] };\n }\n\n const classJoin: ClassJoin = {\n classProperty,\n joinClassName,\n joinClassProperty,\n };\n\n const queryClass: QueryClass = {\n className,\n classJoins: [classJoin],\n };\n\n if (this.query.unions.length <= unionIndex) {\n this.query.unions.push({\n classes: [queryClass],\n properties: [],\n });\n return;\n }\n\n const foundClass = this.query.unions[unionIndex].classes.find((c) =>\n c.className === className\n );\n\n if (foundClass) {\n const foundJoin = foundClass.classJoins.find((join) =>\n join.classProperty === classProperty && join.joinClassName === joinClassName && join.joinClassProperty === joinClassProperty\n );\n\n if (!foundJoin)\n foundClass.classJoins.push(classJoin);\n return;\n }\n\n this.query.unions[unionIndex].classes.push(queryClass);\n }\n\n private addPropertyToQuery(\n unionIndex: number,\n className: string,\n propertyName: string,\n propertyValue: Primitives.Value,\n needsQuote: boolean,\n isCategory: boolean,\n isAspect: boolean,\n ) {\n if (this.query === undefined) {\n this.query = { unions: [] };\n }\n\n const queryJoin: ClassProperty = {\n name: propertyName,\n value: propertyValue,\n needsQuote,\n };\n\n const queryProperty: QueryProperty = {\n className,\n isCategory,\n isAspect,\n classProperties: [queryJoin],\n };\n\n if (this.query.unions.length <= unionIndex) {\n this.query.unions.push({\n classes: [],\n properties: [queryProperty],\n });\n return;\n }\n\n const foundPropertyClass = this.query.unions[unionIndex].properties.find((p) =>\n p.className === className\n );\n\n if (foundPropertyClass) {\n const foundJoin = foundPropertyClass?.classProperties.find((join) =>\n join.name === propertyName\n );\n\n if (foundJoin) {\n foundJoin.value = propertyValue;\n return;\n }\n\n foundPropertyClass.classProperties.push(queryJoin);\n return;\n }\n\n this.query.unions[unionIndex].properties.push(queryProperty);\n }\n\n public buildQueryString() {\n this.regenerateQuery();\n if (\n this.query === undefined ||\n (this.query.unions.find((u) => u.classes.length === 0 && u.properties.length === 0))\n ) {\n return \"\";\n }\n\n const unionSegments: string[] = [];\n for (const union of this.query.unions) {\n\n const baseClass = union.classes[0];\n const baseProperty = union.properties[0];\n const baseClassName = baseClass ? baseClass.className : baseProperty?.className;\n const baseIdName = `${baseClassName}.ECInstanceId`;\n\n const selectClause = this.selectClause(baseProperty, baseClass);\n\n let querySegments: Map<string, string[]> = new Map();\n querySegments = this.relationalJoinSegments(union.classes, querySegments);\n\n const whereSegments: string[] = [];\n for (const property of union.properties) {\n if (property.isCategory) {\n if (property.className !== baseClassName)\n querySegments.set(\"BisCore.GeometricElement3d\", [`BisCore.GeometricElement3d.ECInstanceId = ${baseIdName}`]);\n\n querySegments.set(\"BisCore.Category\", [`BisCore.Category.ECInstanceId = BisCore.GeometricElement3d.category.id`]);\n whereSegments.push(this.categoryWhereQuery(property.classProperties[0].value.toString()));\n continue;\n }\n\n const joinIdName = property.isAspect\n ? `${property.className}.Element.id`\n : `${property.className}.ECInstanceId`;\n\n if (!querySegments.has(property.className) && property.className !== baseClassName)\n querySegments.set(property.className, [`${joinIdName} = ${baseIdName}`]);\n\n for (const prop of property.classProperties) {\n whereSegments.push(this.propertyQuerySegment(property.className, prop, prop.needsQuote));\n }\n }\n\n const joinClauses: string[] = [];\n for (const key of querySegments.keys()) {\n joinClauses.push(`JOIN ${key} ON ${querySegments.get(key)?.join(\" AND \")}`);\n }\n\n const whereClause = `WHERE ${whereSegments.join(\" AND \")}`;\n\n unionSegments.push([selectClause, ...joinClauses, whereClause].join(\" \"));\n }\n\n return unionSegments.join(\" UNION \");\n }\n\n private selectClause(baseProperty: QueryProperty | undefined, baseClass: QueryClass | undefined) {\n if (baseClass) {\n return `SELECT ${baseClass.className}.ECInstanceId, ${baseClass.className}.ECClassId FROM ${baseClass.className}`;\n }\n\n if (baseProperty) {\n const baseIdName = baseProperty.isAspect\n ? `${baseProperty.className}.Element.id ECInstanceId`\n : `${baseProperty.className}.ECInstanceId, ${baseProperty.className}.ECClassId`;\n\n return `SELECT ${baseIdName} FROM ${baseProperty.className}`;\n }\n\n return \"\";\n }\n\n private relationalJoinSegments = (classes: QueryClass[], querySegments: Map<string, string[]>): Map<string, string[]> => {\n for (const queryClass of classes) {\n for (const classJoin of queryClass.classJoins) {\n const querySegment = [\n ...querySegments.get(classJoin.joinClassName) ?? [],\n `${queryClass.className}.${classJoin.classProperty} = ${classJoin.joinClassName}.${classJoin.joinClassProperty}`,\n ];\n querySegments.set(classJoin.joinClassName, querySegment);\n }\n }\n\n return querySegments;\n };\n\n private propertyQuerySegment = (className: string, property: ClassProperty, needsQuote: boolean): string => {\n if (this.isFloat(property.value))\n return `ROUND(${className}.${property.name}, ` +\n `${QueryBuilder.DEFAULT_DOUBLE_PRECISION}) = ` +\n `${Number(property.value).toFixed(QueryBuilder.DEFAULT_DOUBLE_PRECISION)}`;\n\n const propertyValue = needsQuote ? `'${property.value}'` : property.value;\n return `${className}.${property.name} = ${propertyValue}`;\n };\n\n private categoryWhereQuery(codeValue: string): string {\n return `((BisCore.Category.CodeValue = '${codeValue}') OR (BisCore.Category.UserLabel = '${codeValue}'))`;\n }\n\n private isFloat(n: unknown): boolean {\n return Number(n) === n && n % 1 !== 0;\n }\n}\n"]}
@@ -12,7 +12,7 @@ export const QueryBuilderCustomUI = ({ queryGenerationType, groupUIs, isUpdating
12
12
  updateQuery: setQuery,
13
13
  isUpdating,
14
14
  resetView,
15
- initialEditModeQuery: group === null || group === void 0 ? void 0 : group.query,
15
+ initialEditModeQuery: group?.query,
16
16
  });
17
17
  }
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../src/widget/components/QueryBuilderCustomUI.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,KAAK,GACqB,EAAE,EAAE;IAC9B,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;QACzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;QAC9E,IAAI,gBAAgB,EAAE;YACpB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACvD,WAAW,EAAE,QAAQ;gBACrB,UAAU;gBACV,SAAS;gBACT,oBAAoB,EAAE,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK;aACnC,CAAC,CAAC;SACJ;KACF;IACD,OAAO,oBAAC,YAAY,IAAC,OAAO,EAAC,uCAAuC,GAAG,CAAC;AAC1E,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 type { GroupingCustomUI } from \"./customUI/GroupingMappingCustomUI\";\nimport { EmptyMessage } from \"./utils\";\nimport type { Group } from \"@itwin/insights-client\";\n\nexport interface QueryBuilderCustomUIProps {\n queryGenerationType: string;\n groupUIs: GroupingCustomUI[];\n isUpdating: boolean;\n resetView: () => Promise<void>;\n setQuery: (query: string) => void;\n group?: Group;\n}\n\nexport const QueryBuilderCustomUI = ({\n queryGenerationType,\n groupUIs,\n isUpdating,\n resetView,\n setQuery,\n group,\n}: QueryBuilderCustomUIProps) => {\n if (queryGenerationType && queryGenerationType.length > 0) {\n const selectedCustomUI = groupUIs.find((e) => e.name === queryGenerationType);\n if (selectedCustomUI) {\n return React.createElement(selectedCustomUI.uiComponent, {\n updateQuery: setQuery,\n isUpdating,\n resetView,\n initialEditModeQuery: group?.query,\n });\n }\n }\n return <EmptyMessage message=\"No query generation method selected. \" />;\n};\n"]}
1
+ {"version":3,"file":"QueryBuilderCustomUI.js","sourceRoot":"","sources":["../../../../src/widget/components/QueryBuilderCustomUI.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAYvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,mBAAmB,EACnB,QAAQ,EACR,UAAU,EACV,SAAS,EACT,QAAQ,EACR,KAAK,GACqB,EAAE,EAAE;IAC9B,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;QACzD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC;QAC9E,IAAI,gBAAgB,EAAE;YACpB,OAAO,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,EAAE;gBACvD,WAAW,EAAE,QAAQ;gBACrB,UAAU;gBACV,SAAS;gBACT,oBAAoB,EAAE,KAAK,EAAE,KAAK;aACnC,CAAC,CAAC;SACJ;KACF;IACD,OAAO,oBAAC,YAAY,IAAC,OAAO,EAAC,uCAAuC,GAAG,CAAC;AAC1E,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 type { GroupingCustomUI } from \"./customUI/GroupingMappingCustomUI\";\nimport { EmptyMessage } from \"./utils\";\nimport type { Group } from \"@itwin/insights-client\";\n\nexport interface QueryBuilderCustomUIProps {\n queryGenerationType: string;\n groupUIs: GroupingCustomUI[];\n isUpdating: boolean;\n resetView: () => Promise<void>;\n setQuery: (query: string) => void;\n group?: Group;\n}\n\nexport const QueryBuilderCustomUI = ({\n queryGenerationType,\n groupUIs,\n isUpdating,\n resetView,\n setQuery,\n group,\n}: QueryBuilderCustomUIProps) => {\n if (queryGenerationType && queryGenerationType.length > 0) {\n const selectedCustomUI = groupUIs.find((e) => e.name === queryGenerationType);\n if (selectedCustomUI) {\n return React.createElement(selectedCustomUI.uiComponent, {\n updateQuery: setQuery,\n isUpdating,\n resetView,\n initialEditModeQuery: group?.query,\n });\n }\n }\n return <EmptyMessage message=\"No query generation method selected. \" />;\n};\n"]}
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/itwinui-css/scss/variables";
6
5
 
7
6
  .gmw-hide {
8
7
  display: none;
@@ -10,7 +9,7 @@
10
9
  .gmw-query-builder-container {
11
10
  display: flex;
12
11
  flex-direction: column;
13
- gap: $iui-baseline;
12
+ gap: var(--iui-size-s);
14
13
  flex-grow: 1;
15
14
  min-width: 0;
16
15
  min-height: 0;
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import '~@itwin/itwinui-css/scss/variables';
6
5
 
7
6
  .gmw-select-imodel-table-container {
8
7
  display: flex;
@@ -1,6 +1,6 @@
1
1
  import { ITwinSubClass } from "@itwin/itwins-client";
2
2
  import { SvgCalendar, SvgList, SvgStarHollow } from "@itwin/itwinui-icons-react";
3
- import { Button, HorizontalTabs, Tab, Table, tableFilters, TablePaginator } from "@itwin/itwinui-react";
3
+ import { Button, Tab, Table, tableFilters, TablePaginator, Tabs } from "@itwin/itwinui-react";
4
4
  import React, { useCallback, useEffect, useMemo, useState } from "react";
5
5
  import "./SelectITwin.scss";
6
6
  import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
@@ -80,7 +80,7 @@ const SelectITwin = ({ onSelect, onCancel, onChangeITwinType, displayStrings: us
80
80
  const pageSizeList = useMemo(() => [10, 25, 50], []);
81
81
  const paginator = useCallback((props) => (React.createElement(TablePaginator, { ...props, pageSizeList: pageSizeList })), [pageSizeList]);
82
82
  return (React.createElement("div", { className: "gmw-select-itwin-table-container" },
83
- React.createElement(HorizontalTabs, { labels: tabsWithIcons, onTabSelected: (type) => {
83
+ React.createElement(Tabs, { orientation: "horizontal", labels: tabsWithIcons, onTabSelected: (type) => {
84
84
  onChangeITwinType(type);
85
85
  setITwinType(type);
86
86
  }, activeIndex: iTwinType, type: "borderless", contentClassName: "gmw-table-holding-tab" }),
@@ -1 +1 @@
1
- {"version":3,"file":"SelectITwin.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectITwin.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 type { ITwin, ITwinsAccessClient, ITwinsAPIResponse } from \"@itwin/itwins-client\";\nimport { ITwinSubClass } from \"@itwin/itwins-client\";\nimport { SvgCalendar, SvgList, SvgStarHollow } from \"@itwin/itwinui-icons-react\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, HorizontalTabs, Tab, Table, tableFilters, TablePaginator } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport \"./SelectITwin.scss\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { useITwinsClient } from \"./context/ITwinsClientContext\";\nimport { handleError } from \"./utils\";\n\ntype IITwinTyped = CreateTypeFromInterface<ITwin>;\n\nconst defaultDisplayStrings = {\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n};\n\nconst tabsWithIcons = [\n <Tab key=\"favorite\" label=\"Favorite iTwins\" startIcon={<SvgStarHollow />} />,\n <Tab key=\"recents\" label=\"Recent iTwins\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My iTwins\" startIcon={<SvgList />} />,\n];\n\nconst fetchITwins = async (\n setITwins: (iTwins: ITwin[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinsClient: ITwinsAccessClient,\n iTwinType: number,\n) => {\n try {\n setITwins([]);\n setIsLoading(true);\n const accessToken = await getAccessToken();\n let iTwinsResponse: ITwinsAPIResponse<ITwin[]>;\n switch (iTwinType) {\n case 0:\n iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, ITwinSubClass.Project);\n break;\n case 1:\n iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, ITwinSubClass.Project);\n break;\n default:\n iTwinsResponse = await iTwinsClient.queryAsync(accessToken, ITwinSubClass.Project);\n }\n setITwins(iTwinsResponse.data!);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectITwinProps {\n onSelect: (iTwinId: string) => void;\n onCancel: () => void;\n onChangeITwinType: (iTwinType: number) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n defaultITwinType?: number;\n}\nconst SelectITwin = ({\n onSelect,\n onCancel,\n onChangeITwinType,\n displayStrings: userDisplayStrings,\n defaultITwinType = 0,\n}: SelectITwinProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iTwinsClient = useITwinsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iTwins, setITwins] = useState<ITwin[]>([]);\n const [iTwinType, setITwinType] = useState<number>(defaultITwinType);\n\n useEffect(() => {\n void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);\n }, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iTwinsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iTwinNumber\",\n Header: `${displayStrings.iTwinNumber}`,\n accessor: \"number\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinName\",\n Header: `${displayStrings.iTwinName}`,\n accessor: \"displayName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinStatus\",\n Header: `${displayStrings.iTwinStatus}`,\n accessor: \"status\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className=\"gmw-select-itwin-table-container\">\n <HorizontalTabs\n labels={tabsWithIcons}\n onTabSelected={(type) => {\n onChangeITwinType(type);\n setITwinType(type);\n }}\n activeIndex={iTwinType}\n type={\"borderless\"}\n contentClassName=\"gmw-table-holding-tab\">\n </HorizontalTabs>\n <Table<IITwinTyped>\n data={iTwins}\n columns={iTwinsColumns}\n className='gmw-select-itwin-table'\n emptyTableContent={`No ${displayStrings.iTwins} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id!);\n }}\n paginatorRenderer={paginator}\n />\n <div className=\"gmw-import-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectITwin;\n"]}
1
+ {"version":3,"file":"SelectITwin.js","sourceRoot":"","sources":["../../../../src/widget/components/SelectITwin.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 type { ITwin, ITwinsAccessClient, ITwinsAPIResponse } from \"@itwin/itwins-client\";\nimport { ITwinSubClass } from \"@itwin/itwins-client\";\nimport { SvgCalendar, SvgList, SvgStarHollow } from \"@itwin/itwinui-icons-react\";\nimport type { TablePaginatorRendererProps } from \"@itwin/itwinui-react\";\nimport { Button, Tab, Table, tableFilters, TablePaginator, Tabs } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport \"./SelectITwin.scss\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { useITwinsClient } from \"./context/ITwinsClientContext\";\nimport { handleError } from \"./utils\";\n\ntype IITwinTyped = CreateTypeFromInterface<ITwin>;\n\nconst defaultDisplayStrings = {\n iTwins: \"iTwins\",\n iTwinNumber: \"Number\",\n iTwinName: \"Name\",\n iTwinStatus: \"Status\",\n};\n\nconst tabsWithIcons = [\n <Tab key=\"favorite\" label=\"Favorite iTwins\" startIcon={<SvgStarHollow />} />,\n <Tab key=\"recents\" label=\"Recent iTwins\" startIcon={<SvgCalendar />} />,\n <Tab key=\"all\" label=\"My iTwins\" startIcon={<SvgList />} />,\n];\n\nconst fetchITwins = async (\n setITwins: (iTwins: ITwin[]) => void,\n setIsLoading: (isLoading: boolean) => void,\n getAccessToken: GetAccessTokenFn,\n iTwinsClient: ITwinsAccessClient,\n iTwinType: number,\n) => {\n try {\n setITwins([]);\n setIsLoading(true);\n const accessToken = await getAccessToken();\n let iTwinsResponse: ITwinsAPIResponse<ITwin[]>;\n switch (iTwinType) {\n case 0:\n iTwinsResponse = await iTwinsClient.queryFavoritesAsync(accessToken, ITwinSubClass.Project);\n break;\n case 1:\n iTwinsResponse = await iTwinsClient.queryRecentsAsync(accessToken, ITwinSubClass.Project);\n break;\n default:\n iTwinsResponse = await iTwinsClient.queryAsync(accessToken, ITwinSubClass.Project);\n }\n setITwins(iTwinsResponse.data!);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\ninterface SelectITwinProps {\n onSelect: (iTwinId: string) => void;\n onCancel: () => void;\n onChangeITwinType: (iTwinType: number) => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n defaultITwinType?: number;\n}\nconst SelectITwin = ({\n onSelect,\n onCancel,\n onChangeITwinType,\n displayStrings: userDisplayStrings,\n defaultITwinType = 0,\n}: SelectITwinProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const iTwinsClient = useITwinsClient();\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [iTwins, setITwins] = useState<ITwin[]>([]);\n const [iTwinType, setITwinType] = useState<number>(defaultITwinType);\n\n useEffect(() => {\n void fetchITwins(setITwins, setIsLoading, getAccessToken, iTwinsClient, iTwinType);\n }, [getAccessToken, iTwinsClient, setIsLoading, iTwinType]);\n\n const displayStrings = React.useMemo(\n () => ({ ...defaultDisplayStrings, ...userDisplayStrings }),\n [userDisplayStrings]\n );\n\n const iTwinsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"iTwinNumber\",\n Header: `${displayStrings.iTwinNumber}`,\n accessor: \"number\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinName\",\n Header: `${displayStrings.iTwinName}`,\n accessor: \"displayName\",\n Filter: tableFilters.TextFilter(),\n },\n {\n id: \"iTwinStatus\",\n Header: `${displayStrings.iTwinStatus}`,\n accessor: \"status\",\n Filter: tableFilters.TextFilter(),\n },\n ],\n },\n ],\n [displayStrings.iTwinNumber, displayStrings.iTwinName, displayStrings.iTwinStatus]\n );\n\n const pageSizeList = useMemo(() => [10, 25, 50], []);\n const paginator = useCallback(\n (props: TablePaginatorRendererProps) => (\n <TablePaginator {...props} pageSizeList={pageSizeList} />\n ),\n [pageSizeList]\n );\n\n return (\n <div className=\"gmw-select-itwin-table-container\">\n <Tabs\n orientation=\"horizontal\"\n labels={tabsWithIcons}\n onTabSelected={(type) => {\n onChangeITwinType(type);\n setITwinType(type);\n }}\n activeIndex={iTwinType}\n type={\"borderless\"}\n contentClassName=\"gmw-table-holding-tab\">\n </Tabs>\n <Table<IITwinTyped>\n data={iTwins}\n columns={iTwinsColumns}\n className='gmw-select-itwin-table'\n emptyTableContent={`No ${displayStrings.iTwins} available.`}\n isSortable\n isLoading={isLoading}\n onRowClick={(_, row) => {\n onSelect(row.original.id!);\n }}\n paginatorRenderer={paginator}\n />\n <div className=\"gmw-import-action-panel\">\n <Button onClick={onCancel}>Cancel</Button>\n </div>\n </div>\n );\n};\n\nexport default SelectITwin;\n"]}
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import '~@itwin/itwinui-css/scss/variables';
6
5
 
7
6
  .gmw-select-itwin-table-container {
8
7
  display: flex;
@@ -13,7 +12,7 @@
13
12
  .gmw-table-holding-tab {
14
13
  display: flex;
15
14
  flex-direction: column;
16
- gap: $iui-baseline;
15
+ gap: var(--iui-size-s);
17
16
  }
18
17
 
19
18
  .gmw-select-itwin-table {
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import '~@itwin/itwinui-css/scss/variables';
6
5
 
7
6
  .gmw-select-mapping-container {
8
7
  display: flex;
@@ -7,6 +7,7 @@ import { useSortable } from "@dnd-kit/sortable";
7
7
  import { HorizontalTile } from "./HorizontalTile";
8
8
  import { CSS } from "@dnd-kit/utilities";
9
9
  import { SvgDragHandleVertical } from "@itwin/itwinui-icons-react";
10
+ import { Icon } from "@itwin/itwinui-react";
10
11
  const SortableHorizontalTile = ({ id, ...props }) => {
11
12
  const { attributes, listeners, isDragging, setNodeRef, transform, transition, } = useSortable({ id });
12
13
  const style = {
@@ -23,7 +24,7 @@ const SortableHorizontalTile = ({ id, ...props }) => {
23
24
  };
24
25
  }, [isDragging]);
25
26
  return (React.createElement("div", { ref: setNodeRef, ...attributes, style: { ...style, visibility: isDragging ? "hidden" : "visible" } },
26
- React.createElement(HorizontalTile, { dragHandle: React.createElement("div", { className: "gmw-drag-icon", style: { cursor: "grab" }, title: "Drag & Drop", ...listeners },
27
+ React.createElement(HorizontalTile, { dragHandle: React.createElement(Icon, { className: "gmw-drag-icon", size: "large", style: { cursor: "grab" }, title: "Drag & Drop", ...listeners },
27
28
  React.createElement(SvgDragHandleVertical, null)), ...props })));
28
29
  };
29
30
  export default SortableHorizontalTile;
@@ -1 +1 @@
1
- {"version":3,"file":"SortableHorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/SortableHorizontalTile.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAMnE,MAAM,sBAAsB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAA+B,EAAE,EAAE;IAC/E,MAAM,EACJ,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5C,UAAU;KACX,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BACE,GAAG,EAAE,UAAU,KACX,UAAU,EACd,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QAElE,oBAAC,cAAc,IACb,UAAU,EACR,6BAAK,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAC,aAAa,KAAK,SAAS;gBACzF,oBAAC,qBAAqB,OAAG,CACrB,KAEJ,KAAK,GACT,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,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, { useEffect } from \"react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport type { HorizontalTileProps } from \"./HorizontalTile\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { SvgDragHandleVertical } from \"@itwin/itwinui-icons-react\";\n\ninterface SortableHorizontalTileProps extends HorizontalTileProps {\n id: string;\n}\n\nconst SortableHorizontalTile = ({ id, ...props }: SortableHorizontalTileProps) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef,\n transform,\n transition,\n } = useSortable({ id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n useEffect(() => {\n if (!isDragging) {\n return;\n }\n document.body.style.cursor = \"grabbing\";\n return () => {\n document.body.style.cursor = \"\";\n };\n }, [isDragging]);\n\n return (\n <div\n ref={setNodeRef}\n {...attributes}\n style={{ ...style, visibility: isDragging ? \"hidden\" : \"visible\" }}\n >\n <HorizontalTile\n dragHandle={\n <div className=\"gmw-drag-icon\" style={{ cursor: \"grab\" }} title=\"Drag & Drop\" {...listeners}>\n <SvgDragHandleVertical />\n </div>\n }\n {...props}\n />\n </div>\n );\n};\n\nexport default SortableHorizontalTile;\n"]}
1
+ {"version":3,"file":"SortableHorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/SortableHorizontalTile.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAM5C,MAAM,sBAAsB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,EAA+B,EAAE,EAAE;IAC/E,MAAM,EACJ,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,GACX,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAExB,MAAM,KAAK,GAAG;QACZ,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5C,UAAU;KACX,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QACxC,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAClC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,6BACE,GAAG,EAAE,UAAU,KACX,UAAU,EACd,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;QAElE,oBAAC,cAAc,IACb,UAAU,EACR,oBAAC,IAAI,IAAC,SAAS,EAAC,eAAe,EAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAC,aAAa,KAAK,SAAS;gBACvG,oBAAC,qBAAqB,OAAG,CACpB,KAEL,KAAK,GACT,CACE,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,sBAAsB,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, { useEffect } from \"react\";\nimport { useSortable } from \"@dnd-kit/sortable\";\nimport type { HorizontalTileProps } from \"./HorizontalTile\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { SvgDragHandleVertical } from \"@itwin/itwinui-icons-react\";\nimport { Icon } from \"@itwin/itwinui-react\";\n\ninterface SortableHorizontalTileProps extends HorizontalTileProps {\n id: string;\n}\n\nconst SortableHorizontalTile = ({ id, ...props }: SortableHorizontalTileProps) => {\n const {\n attributes,\n listeners,\n isDragging,\n setNodeRef,\n transform,\n transition,\n } = useSortable({ id });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n useEffect(() => {\n if (!isDragging) {\n return;\n }\n document.body.style.cursor = \"grabbing\";\n return () => {\n document.body.style.cursor = \"\";\n };\n }, [isDragging]);\n\n return (\n <div\n ref={setNodeRef}\n {...attributes}\n style={{ ...style, visibility: isDragging ? \"hidden\" : \"visible\" }}\n >\n <HorizontalTile\n dragHandle={\n <Icon className=\"gmw-drag-icon\" size=\"large\" style={{ cursor: \"grab\" }} title=\"Drag & Drop\" {...listeners}>\n <SvgDragHandleVertical />\n </Icon>\n }\n {...props}\n />\n </div>\n );\n};\n\nexport default SortableHorizontalTile;\n"]}
@@ -1,11 +1,10 @@
1
- /// <reference types="react" />
2
- import { SvgInfoCircular, SvgStatusError, SvgStatusSuccess, SvgStatusWarning } from "@itwin/itwinui-icons-react";
1
+ import React from "react";
3
2
  import "./StatusIcon.scss";
4
3
  declare const StatusIconMap: {
5
- readonly success: typeof SvgStatusSuccess;
6
- readonly error: typeof SvgStatusError;
7
- readonly warning: typeof SvgStatusWarning;
8
- readonly informational: typeof SvgInfoCircular;
4
+ readonly success: (props: React.SVGProps<SVGSVGElement>) => any;
5
+ readonly error: (props: React.SVGProps<SVGSVGElement>) => any;
6
+ readonly warning: (props: React.SVGProps<SVGSVGElement>) => any;
7
+ readonly informational: (props: React.SVGProps<SVGSVGElement>) => any;
9
8
  };
10
9
  export declare const StatusIcon: ({ status, className, ...rest }: {
11
10
  status: keyof typeof StatusIconMap;
@@ -2,25 +2,21 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "@itwin/itwinui-css/scss/icon/variables";
6
5
 
7
6
  .gmw-status-icon {
8
- width: $iui-icons-default;
9
- height: $iui-icons-default;
10
-
11
7
  &-success {
12
- fill: var(--iui-icons-color-positive);
8
+ fill: var(--iui-color-icon-positive);
13
9
  }
14
10
 
15
11
  &-error {
16
- fill: var(--iui-icons-color-negative);
12
+ fill: var(--iui-color-icon-negative);
17
13
  }
18
14
 
19
15
  &-warning {
20
- fill: var(--iui-icons-color-warning);
16
+ fill: var(--iui-color-icon-warning);
21
17
  }
22
18
 
23
19
  &-informational {
24
- fill: var(--iui-icons-color-primary);
20
+ fill: var(--iui-color-icon-informational);
25
21
  }
26
22
  }
@@ -2,8 +2,7 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/itwinui-css/scss/variables";
6
5
 
7
6
  .gmw-toggle {
8
- margin-right: $iui-xs;
7
+ margin-right: var(--iui-size-2xs);
9
8
  }
@@ -3,12 +3,12 @@
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { SvgChevronLeft } from "@itwin/itwinui-icons-react";
6
- import { Text } from "@itwin/itwinui-react";
6
+ import { Icon, Text } from "@itwin/itwinui-react";
7
7
  import "./WidgetHeader.scss";
8
8
  import React from "react";
9
9
  export const WidgetHeader = ({ title, disabled = false, returnFn, }) => {
10
10
  return (React.createElement("div", { className: 'gmw-widget-header-container' },
11
- returnFn && (React.createElement("div", { className: disabled ? "gmw-chevron-disabled" : "gmw-chevron", onClick: disabled ? undefined : returnFn },
11
+ returnFn && (React.createElement(Icon, { className: `${disabled ? "gmw-chevron-disabled" : "gmw-chevron"}`, size: "large", onClick: disabled ? undefined : returnFn },
12
12
  React.createElement(SvgChevronLeft, null))),
13
13
  React.createElement(Text, { className: 'gmw-title', variant: 'title' }, title)));
14
14
  };
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetHeader.js","sourceRoot":"","sources":["../../../../src/widget/components/WidgetHeader.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACU,EAAE,EAAE;IACtB,OAAO,CACL,6BAAK,SAAS,EAAC,6BAA6B;QACzC,QAAQ,IAAI,CACX,6BACE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,EAC5D,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAExC,oBAAC,cAAc,OAAG,CACd,CACP;QACD,oBAAC,IAAI,IAAC,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,IACxC,KAAK,CACD,CACH,CACP,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 { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./WidgetHeader.scss\";\nimport React from \"react\";\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => void;\n}\n\nexport const WidgetHeader = ({\n title,\n disabled = false,\n returnFn,\n}: WidgetHeaderProps) => {\n return (\n <div className='gmw-widget-header-container'>\n {returnFn && (\n <div\n className={disabled ? \"gmw-chevron-disabled\" : \"gmw-chevron\"}\n onClick={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </div>\n )}\n <Text className='gmw-title' variant='title'>\n {title}\n </Text>\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"WidgetHeader.js","sourceRoot":"","sources":["../../../../src/widget/components/WidgetHeader.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,KAAK,EACL,QAAQ,GAAG,KAAK,EAChB,QAAQ,GACU,EAAE,EAAE;IACtB,OAAO,CACL,6BAAK,SAAS,EAAC,6BAA6B;QACzC,QAAQ,IAAI,CACX,oBAAC,IAAI,IACH,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,aAAa,EAAE,EACjE,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ;YAExC,oBAAC,cAAc,OAAG,CACb,CACR;QACD,oBAAC,IAAI,IAAC,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,IACxC,KAAK,CACD,CACH,CACP,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 { SvgChevronLeft } from \"@itwin/itwinui-icons-react\";\nimport { Icon, Text } from \"@itwin/itwinui-react\";\nimport \"./WidgetHeader.scss\";\nimport React from \"react\";\n\nexport interface WidgetHeaderProps {\n title: string;\n disabled?: boolean;\n returnFn?: () => void;\n}\n\nexport const WidgetHeader = ({\n title,\n disabled = false,\n returnFn,\n}: WidgetHeaderProps) => {\n return (\n <div className='gmw-widget-header-container'>\n {returnFn && (\n <Icon\n className={`${disabled ? \"gmw-chevron-disabled\" : \"gmw-chevron\"}`}\n size=\"large\"\n onClick={disabled ? undefined : returnFn}\n >\n <SvgChevronLeft />\n </Icon>\n )}\n <Text className='gmw-title' variant='title'>\n {title}\n </Text>\n </div>\n );\n};\n"]}
@@ -2,30 +2,22 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- @import "~@itwin/itwinui-css/scss/variables";
6
- @import "~@itwin/itwinui-css/scss/icon/index";
7
- @import "~@itwin/itwinui-css/scss/button/index";
8
5
 
9
6
  .gmw-widget-header-container {
10
7
  display: flex;
11
- margin-bottom: $iui-baseline * 2;
8
+ margin-bottom: calc(var(--iui-size-s) * 2);
12
9
 
13
10
  .gmw-chevron {
14
- @include iui-icons-large();
15
11
  cursor: pointer;
16
12
  align-self: center;
17
- margin-right: $iui-s;
13
+ margin-right: var(--iui-size-xs);
18
14
  }
19
15
 
20
16
  .gmw-chevron-disabled {
21
- @include iui-icons-large();
22
- @include themed {
23
- fill: t(iui-icons-color-actionable-disabled);
24
- }
17
+ fill: var(--iui-color-icon-muted);
25
18
  cursor: not-allowed;
26
-
27
19
  align-self: center;
28
- margin-right: $iui-s;
20
+ margin-right: var(--iui-size-xs);
29
21
  }
30
22
 
31
23
  .gmw-title {
@@ -4,7 +4,7 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  import { createContext, useContext } from "react";
6
6
  export const createGroupingMappingCustomUI = (customUIs) => {
7
- return customUIs !== null && customUIs !== void 0 ? customUIs : [];
7
+ return customUIs ?? [];
8
8
  };
9
9
  export const GroupingMappingCustomUIContext = createContext({
10
10
  customUIs: [],
@@ -1 +1 @@
1
- {"version":3,"file":"GroupingMappingCustomUIContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/GroupingMappingCustomUIContext.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAgD,EACrB,EAAE;IAC7B,OAAO,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,EAAE,CAAC;AACzB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAA2B;IACpF,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,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 { createContext, useContext } from \"react\";\nimport type { GroupingMappingCustomUI } from \"../customUI/GroupingMappingCustomUI\";\n\nexport const createGroupingMappingCustomUI = (\n customUIs: GroupingMappingCustomUI[] | undefined,\n): GroupingMappingCustomUI[] => {\n return customUIs ?? [];\n};\n\nexport interface IGroupingMappingCustomUI {\n customUIs: GroupingMappingCustomUI[];\n setCustomUIs: (customUI: GroupingMappingCustomUI[] | ((customUI: GroupingMappingCustomUI[]) => GroupingMappingCustomUI[])) => void;\n}\n\nexport const GroupingMappingCustomUIContext = createContext<IGroupingMappingCustomUI>({\n customUIs: [],\n setCustomUIs: () => { },\n});\n\nexport const useGroupingMappingCustomUI = () => {\n const context = useContext(GroupingMappingCustomUIContext);\n if (!context) {\n throw new Error(\n \"useGroupingMappingCustomUI should be used within a GroupingMappingCustomUIContext provider\",\n );\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"GroupingMappingCustomUIContext.js","sourceRoot":"","sources":["../../../../../src/widget/components/context/GroupingMappingCustomUIContext.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAC3C,SAAgD,EACrB,EAAE;IAC7B,OAAO,SAAS,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC;AAOF,MAAM,CAAC,MAAM,8BAA8B,GAAG,aAAa,CAA2B;IACpF,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,8BAA8B,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;KACH;IACD,OAAO,OAAO,CAAC;AACjB,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 { createContext, useContext } from \"react\";\nimport type { GroupingMappingCustomUI } from \"../customUI/GroupingMappingCustomUI\";\n\nexport const createGroupingMappingCustomUI = (\n customUIs: GroupingMappingCustomUI[] | undefined,\n): GroupingMappingCustomUI[] => {\n return customUIs ?? [];\n};\n\nexport interface IGroupingMappingCustomUI {\n customUIs: GroupingMappingCustomUI[];\n setCustomUIs: (customUI: GroupingMappingCustomUI[] | ((customUI: GroupingMappingCustomUI[]) => GroupingMappingCustomUI[])) => void;\n}\n\nexport const GroupingMappingCustomUIContext = createContext<IGroupingMappingCustomUI>({\n customUIs: [],\n setCustomUIs: () => { },\n});\n\nexport const useGroupingMappingCustomUI = () => {\n const context = useContext(GroupingMappingCustomUIContext);\n if (!context) {\n throw new Error(\n \"useGroupingMappingCustomUI should be used within a GroupingMappingCustomUIContext provider\",\n );\n }\n return context;\n};\n"]}
@@ -47,7 +47,7 @@ export const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView,
47
47
  : () => { };
48
48
  }, [iModelConnection]);
49
49
  const onClickResetButton = async () => {
50
- queryBuilder === null || queryBuilder === void 0 ? void 0 : queryBuilder.resetQueryBuilder();
50
+ queryBuilder?.resetQueryBuilder();
51
51
  updateQuery("");
52
52
  setCurrentPropertyList([]);
53
53
  if (resetView)
@@ -61,7 +61,7 @@ export const GroupQueryBuilderCustomUI = ({ updateQuery, isUpdating, resetView,
61
61
  setCurrentPropertyList,
62
62
  queryBuilder,
63
63
  setQuery: updateQuery,
64
- isUpdating: isUpdating !== null && isUpdating !== void 0 ? isUpdating : false,
64
+ isUpdating: isUpdating ?? false,
65
65
  }), [currentPropertyList, isUpdating, queryBuilder, updateQuery]);
66
66
  const actionButtonRenderers = useMemo(() => [
67
67
  ({ property }) => (React.createElement(PropertyAction, { property: property })),