@itwin/grouping-mapping-widget 0.9.3 → 0.10.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 (169) hide show
  1. package/lib/cjs/grouping-mapping-widget.d.ts +9 -3
  2. package/lib/cjs/grouping-mapping-widget.js +15 -3
  3. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  4. package/lib/cjs/test/GroupingMappingCustomUI.test.js +49 -86
  5. package/lib/cjs/test/GroupingMappingCustomUI.test.js.map +1 -1
  6. package/lib/cjs/test/test-utils.d.ts +0 -6
  7. package/lib/cjs/test/test-utils.js +8 -24
  8. package/lib/cjs/test/test-utils.js.map +1 -1
  9. package/lib/cjs/widget/components/ActionPanel.d.ts +1 -1
  10. package/lib/cjs/widget/components/ActionPanel.js +1 -1
  11. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  12. package/lib/cjs/widget/components/ConfirmMappingsImport.js +1 -4
  13. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  14. package/lib/cjs/widget/components/GroupAction.d.ts +13 -9
  15. package/lib/cjs/widget/components/GroupAction.js +56 -58
  16. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  17. package/lib/cjs/widget/components/GroupPropertyAction.d.ts +1 -1
  18. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  19. package/lib/cjs/widget/components/GroupPropertyUtils.js +4 -0
  20. package/lib/cjs/widget/components/GroupPropertyUtils.js.map +1 -1
  21. package/lib/cjs/widget/components/Grouping.d.ts +8 -9
  22. package/lib/cjs/widget/components/Grouping.js +118 -273
  23. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  24. package/lib/cjs/widget/components/Grouping.scss +2 -2
  25. package/lib/cjs/widget/components/GroupingMapping.d.ts +28 -21
  26. package/lib/cjs/widget/components/GroupingMapping.js +59 -38
  27. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  28. package/lib/cjs/widget/components/GroupingMappingContent.d.ts +8 -0
  29. package/lib/cjs/widget/components/GroupingMappingContent.js +47 -0
  30. package/lib/cjs/widget/components/GroupingMappingContent.js.map +1 -0
  31. package/lib/cjs/widget/components/GroupingMappingContext.d.ts +31 -0
  32. package/lib/cjs/widget/components/GroupingMappingContext.js +84 -0
  33. package/lib/cjs/widget/components/GroupingMappingContext.js.map +1 -0
  34. package/lib/cjs/widget/components/GroupingMappingHeader.d.ts +8 -0
  35. package/lib/cjs/widget/components/GroupingMappingHeader.js +17 -0
  36. package/lib/cjs/widget/components/GroupingMappingHeader.js.map +1 -0
  37. package/lib/cjs/widget/components/GroupingMappingRouter.d.ts +8 -0
  38. package/lib/cjs/widget/components/GroupingMappingRouter.js +87 -0
  39. package/lib/cjs/widget/components/GroupingMappingRouter.js.map +1 -0
  40. package/lib/cjs/widget/components/Mapping.d.ts +7 -2
  41. package/lib/cjs/widget/components/Mapping.js +53 -84
  42. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  43. package/lib/cjs/widget/components/MappingAction.d.ts +9 -5
  44. package/lib/cjs/widget/components/MappingAction.js +19 -8
  45. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  46. package/lib/cjs/widget/components/QueryBuilder.js +2 -7
  47. package/lib/cjs/widget/components/QueryBuilder.js.map +1 -1
  48. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.d.ts +15 -0
  49. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js +45 -0
  50. package/lib/cjs/widget/components/context/GroupHilitedElementsContext.js.map +1 -0
  51. package/lib/cjs/widget/components/context/GroupingApiConfigContext.d.ts +1 -0
  52. package/lib/cjs/widget/components/context/GroupingApiConfigContext.js +1 -0
  53. package/lib/cjs/widget/components/context/GroupingApiConfigContext.js.map +1 -1
  54. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.d.ts +6 -2
  55. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js +5 -5
  56. package/lib/cjs/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  57. package/lib/cjs/widget/components/customUI/DefaultGroupingUI.d.ts +3 -0
  58. package/lib/cjs/widget/components/customUI/DefaultGroupingUI.js +40 -0
  59. package/lib/cjs/widget/components/customUI/DefaultGroupingUI.js.map +1 -0
  60. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.d.ts +5 -0
  61. package/lib/cjs/widget/components/{GroupQueryBuilderContainer.js → customUI/GroupQueryBuilderCustomUI.js} +36 -16
  62. package/lib/cjs/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -0
  63. package/lib/cjs/widget/components/customUI/GroupingMappingCustomUI.d.ts +3 -2
  64. package/lib/cjs/widget/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  65. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.d.ts +1 -2
  66. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js +2 -1
  67. package/lib/cjs/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  68. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.d.ts +1 -2
  69. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js +2 -1
  70. package/lib/cjs/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  71. package/lib/cjs/widget/components/groupsHelpers.d.ts +7 -0
  72. package/lib/cjs/widget/components/groupsHelpers.js +84 -0
  73. package/lib/cjs/widget/components/groupsHelpers.js.map +1 -0
  74. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.d.ts +1 -1
  75. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js +1 -1
  76. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js.map +1 -1
  77. package/lib/cjs/widget/components/property-grid/PropertyView.js +29 -15
  78. package/lib/cjs/widget/components/property-grid/PropertyView.js.map +1 -1
  79. package/lib/cjs/widget/components/utils.d.ts +1 -3
  80. package/lib/cjs/widget/components/utils.js +1 -26
  81. package/lib/cjs/widget/components/utils.js.map +1 -1
  82. package/lib/esm/grouping-mapping-widget.d.ts +9 -3
  83. package/lib/esm/grouping-mapping-widget.js +7 -1
  84. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  85. package/lib/esm/test/GroupingMappingCustomUI.test.js +46 -83
  86. package/lib/esm/test/GroupingMappingCustomUI.test.js.map +1 -1
  87. package/lib/esm/test/test-utils.d.ts +0 -6
  88. package/lib/esm/test/test-utils.js +7 -22
  89. package/lib/esm/test/test-utils.js.map +1 -1
  90. package/lib/esm/widget/components/ActionPanel.d.ts +1 -1
  91. package/lib/esm/widget/components/ActionPanel.js +1 -1
  92. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  93. package/lib/esm/widget/components/ConfirmMappingsImport.js +1 -4
  94. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  95. package/lib/esm/widget/components/GroupAction.d.ts +13 -9
  96. package/lib/esm/widget/components/GroupAction.js +57 -61
  97. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  98. package/lib/esm/widget/components/GroupPropertyAction.d.ts +1 -1
  99. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  100. package/lib/esm/widget/components/GroupPropertyUtils.js +4 -0
  101. package/lib/esm/widget/components/GroupPropertyUtils.js.map +1 -1
  102. package/lib/esm/widget/components/Grouping.d.ts +8 -9
  103. package/lib/esm/widget/components/Grouping.js +122 -277
  104. package/lib/esm/widget/components/Grouping.js.map +1 -1
  105. package/lib/esm/widget/components/Grouping.scss +2 -2
  106. package/lib/esm/widget/components/GroupingMapping.d.ts +28 -21
  107. package/lib/esm/widget/components/GroupingMapping.js +59 -39
  108. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  109. package/lib/esm/widget/components/GroupingMappingContent.d.ts +8 -0
  110. package/lib/esm/widget/components/GroupingMappingContent.js +24 -0
  111. package/lib/esm/widget/components/GroupingMappingContent.js.map +1 -0
  112. package/lib/esm/widget/components/GroupingMappingContext.d.ts +31 -0
  113. package/lib/esm/widget/components/GroupingMappingContext.js +61 -0
  114. package/lib/esm/widget/components/GroupingMappingContext.js.map +1 -0
  115. package/lib/esm/widget/components/GroupingMappingHeader.d.ts +8 -0
  116. package/lib/esm/widget/components/GroupingMappingHeader.js +10 -0
  117. package/lib/esm/widget/components/GroupingMappingHeader.js.map +1 -0
  118. package/lib/esm/widget/components/GroupingMappingRouter.d.ts +8 -0
  119. package/lib/esm/widget/components/GroupingMappingRouter.js +80 -0
  120. package/lib/esm/widget/components/GroupingMappingRouter.js.map +1 -0
  121. package/lib/esm/widget/components/Mapping.d.ts +7 -2
  122. package/lib/esm/widget/components/Mapping.js +55 -86
  123. package/lib/esm/widget/components/Mapping.js.map +1 -1
  124. package/lib/esm/widget/components/MappingAction.d.ts +9 -5
  125. package/lib/esm/widget/components/MappingAction.js +18 -9
  126. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  127. package/lib/esm/widget/components/QueryBuilder.js +2 -7
  128. package/lib/esm/widget/components/QueryBuilder.js.map +1 -1
  129. package/lib/esm/widget/components/context/GroupHilitedElementsContext.d.ts +15 -0
  130. package/lib/esm/widget/components/context/GroupHilitedElementsContext.js +22 -0
  131. package/lib/esm/widget/components/context/GroupHilitedElementsContext.js.map +1 -0
  132. package/lib/esm/widget/components/context/GroupingApiConfigContext.d.ts +1 -0
  133. package/lib/esm/widget/components/context/GroupingApiConfigContext.js +1 -0
  134. package/lib/esm/widget/components/context/GroupingApiConfigContext.js.map +1 -1
  135. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.d.ts +6 -2
  136. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js +5 -5
  137. package/lib/esm/widget/components/context/GroupingMappingCustomUIContext.js.map +1 -1
  138. package/lib/esm/widget/components/customUI/DefaultGroupingUI.d.ts +3 -0
  139. package/lib/esm/widget/components/customUI/DefaultGroupingUI.js +34 -0
  140. package/lib/esm/widget/components/customUI/DefaultGroupingUI.js.map +1 -0
  141. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.d.ts +5 -0
  142. package/lib/esm/widget/components/{GroupQueryBuilderContainer.js → customUI/GroupQueryBuilderCustomUI.js} +11 -7
  143. package/lib/esm/widget/components/customUI/GroupQueryBuilderCustomUI.js.map +1 -0
  144. package/lib/esm/widget/components/customUI/GroupingMappingCustomUI.d.ts +3 -2
  145. package/lib/esm/widget/components/customUI/GroupingMappingCustomUI.js.map +1 -1
  146. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.d.ts +1 -2
  147. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js +1 -2
  148. package/lib/esm/widget/components/customUI/ManualGroupingCustomUI.js.map +1 -1
  149. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.d.ts +1 -2
  150. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js +1 -2
  151. package/lib/esm/widget/components/customUI/SearchGroupingCustomUI.js.map +1 -1
  152. package/lib/esm/widget/components/groupsHelpers.d.ts +7 -0
  153. package/lib/esm/widget/components/groupsHelpers.js +77 -0
  154. package/lib/esm/widget/components/groupsHelpers.js.map +1 -0
  155. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.d.ts +1 -1
  156. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js +1 -1
  157. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js.map +1 -1
  158. package/lib/esm/widget/components/property-grid/PropertyView.js +1 -3
  159. package/lib/esm/widget/components/property-grid/PropertyView.js.map +1 -1
  160. package/lib/esm/widget/components/utils.d.ts +1 -3
  161. package/lib/esm/widget/components/utils.js +0 -24
  162. package/lib/esm/widget/components/utils.js.map +1 -1
  163. package/package.json +3 -3
  164. package/lib/cjs/widget/components/GroupQueryBuilderContainer.d.ts +0 -5
  165. package/lib/cjs/widget/components/GroupQueryBuilderContainer.js.map +0 -1
  166. package/lib/esm/widget/components/GroupQueryBuilderContainer.d.ts +0 -5
  167. package/lib/esm/widget/components/GroupQueryBuilderContainer.js.map +0 -1
  168. /package/lib/cjs/widget/components/{GroupQueryBuilder.scss → customUI/GroupQueryBuilderCustomUI.scss} +0 -0
  169. /package/lib/esm/widget/components/{GroupQueryBuilder.scss → customUI/GroupQueryBuilderCustomUI.scss} +0 -0
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GroupingMappingHeader = void 0;
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ const react_1 = __importDefault(require("react"));
12
+ const utils_1 = require("./utils");
13
+ const GroupingMappingHeader = ({ routingHistory, goBack, currentRoute, }) => {
14
+ return (react_1.default.createElement(utils_1.WidgetHeader, { returnFn: routingHistory.length > 1 ? goBack : undefined, title: currentRoute.title }));
15
+ };
16
+ exports.GroupingMappingHeader = GroupingMappingHeader;
17
+ //# sourceMappingURL=GroupingMappingHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupingMappingHeader.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupingMappingHeader.tsx"],"names":[],"mappings":";;;;;;AAAA;;;+FAG+F;AAC/F,kDAA0B;AAE1B,mCAAuC;AAEhC,MAAM,qBAAqB,GAAG,CAAC,EACpC,cAAc,EACd,MAAM,EACN,YAAY,GAKb,EAAE,EAAE;IACH,OAAO,CACL,8BAAC,oBAAY,IACX,QAAQ,EACN,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAEhD,KAAK,EAAE,YAAY,CAAC,KAAK,GACzB,CACH,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,qBAAqB,yBAiBhC","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 { Route } from \"./GroupingMapping\";\nimport { WidgetHeader } from \"./utils\";\n\nexport const GroupingMappingHeader = ({\n routingHistory,\n goBack,\n currentRoute,\n}: {\n routingHistory: Route[];\n goBack: () => void;\n currentRoute: Route;\n}) => {\n return (\n <WidgetHeader\n returnFn={\n routingHistory.length > 1 ? goBack : undefined\n }\n title={currentRoute.title}\n />\n );\n};\n"]}
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { Route } from "./GroupingMapping";
3
+ export declare const GroupingMappingRouter: ({ currentRoute, navigateTo, goBack, }: {
4
+ currentRoute: Route;
5
+ navigateTo: (toRoute: (prev: Route | undefined) => Route) => void;
6
+ goBack: () => void;
7
+ }) => JSX.Element | null;
8
+ //# sourceMappingURL=GroupingMappingRouter.d.ts.map
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GroupingMappingRouter = void 0;
7
+ /*---------------------------------------------------------------------------------------------
8
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
9
+ * See LICENSE.md in the project root for license terms and full copyright notice.
10
+ *--------------------------------------------------------------------------------------------*/
11
+ const react_1 = __importDefault(require("react"));
12
+ const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
13
+ const GroupAction_1 = require("./GroupAction");
14
+ const Grouping_1 = require("./Grouping");
15
+ const GroupingMapping_1 = require("./GroupingMapping");
16
+ const Mapping_1 = require("./Mapping");
17
+ const MappingAction_1 = require("./MappingAction");
18
+ const PropertyMenu_1 = require("./PropertyMenu");
19
+ const GroupingMappingRouter = ({ currentRoute, navigateTo, goBack, }) => {
20
+ const { iModelId } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
21
+ const { mapping, group, groupContextCustomUI, queryGenerationType } = currentRoute.groupingRouteFields;
22
+ switch (currentRoute.step) {
23
+ case GroupingMapping_1.RouteStep.Mappings:
24
+ return (react_1.default.createElement(Mapping_1.Mappings, { onClickAddMapping: () => navigateTo(() => ({ step: GroupingMapping_1.RouteStep.MappingsAction, title: "Add Mapping", groupingRouteFields: {} })), onClickMappingTitle: (mapping) => {
25
+ navigateTo(() => ({
26
+ step: GroupingMapping_1.RouteStep.Groups,
27
+ groupingRouteFields: { mapping },
28
+ title: mapping.mappingName,
29
+ }));
30
+ }, onClickMappingModify: (mapping) => {
31
+ navigateTo(() => ({
32
+ step: GroupingMapping_1.RouteStep.MappingsAction,
33
+ groupingRouteFields: { mapping },
34
+ title: mapping.mappingName,
35
+ }));
36
+ } }));
37
+ case GroupingMapping_1.RouteStep.MappingsAction:
38
+ return (react_1.default.createElement(MappingAction_1.MappingAction, { mapping: mapping, onClickCancel: goBack, onSaveSuccess: goBack }));
39
+ case GroupingMapping_1.RouteStep.Groups:
40
+ if (mapping) {
41
+ return (react_1.default.createElement(Grouping_1.Groupings, { mapping: mapping, onClickAddGroup: (qType) => navigateTo((prev) => ({
42
+ step: GroupingMapping_1.RouteStep.GroupAction,
43
+ groupingRouteFields: { ...prev === null || prev === void 0 ? void 0 : prev.groupingRouteFields, queryGenerationType: qType },
44
+ title: "Add Group",
45
+ })), onClickGroupTitle: (g) => navigateTo((prev) => ({
46
+ step: GroupingMapping_1.RouteStep.Properties,
47
+ title: g.groupName,
48
+ groupingRouteFields: { ...prev === null || prev === void 0 ? void 0 : prev.groupingRouteFields, group: g },
49
+ })), onClickGroupModify: (g, qType) => navigateTo((prev) => ({
50
+ step: GroupingMapping_1.RouteStep.GroupAction,
51
+ title: g.groupName,
52
+ groupingRouteFields: { ...prev === null || prev === void 0 ? void 0 : prev.groupingRouteFields, group: g, queryGenerationType: qType },
53
+ })), onClickRenderContextCustomUI: (ccUI, g) => navigateTo((prev) => {
54
+ var _a;
55
+ return ({
56
+ step: GroupingMapping_1.RouteStep.GroupAction,
57
+ title: (_a = ccUI.displayName) !== null && _a !== void 0 ? _a : "",
58
+ groupingRouteFields: { ...prev === null || prev === void 0 ? void 0 : prev.groupingRouteFields, group: g, groupContextCustomUI: ccUI },
59
+ });
60
+ }) }));
61
+ }
62
+ return null;
63
+ case GroupingMapping_1.RouteStep.GroupAction:
64
+ if (mapping) {
65
+ if (queryGenerationType) {
66
+ return (react_1.default.createElement(GroupAction_1.GroupAction, { mappingId: mapping.id, group: group, onClickCancel: goBack, onSaveSuccess: goBack, queryGenerationType: queryGenerationType }));
67
+ }
68
+ else if (group && groupContextCustomUI) {
69
+ return (react_1.default.createElement(groupContextCustomUI, {
70
+ iModelId,
71
+ mappingId: mapping.id,
72
+ groupId: group.id,
73
+ }));
74
+ }
75
+ }
76
+ return null;
77
+ case GroupingMapping_1.RouteStep.Properties:
78
+ if (mapping && group) {
79
+ return (react_1.default.createElement(PropertyMenu_1.PropertyMenu, { iModelId: iModelId, mappingId: mapping.id, group: group, goBack: async () => goBack() }));
80
+ }
81
+ return null;
82
+ default:
83
+ return null;
84
+ }
85
+ };
86
+ exports.GroupingMappingRouter = GroupingMappingRouter;
87
+ //# sourceMappingURL=GroupingMappingRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GroupingMappingRouter.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupingMappingRouter.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 React from \"react\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { GroupAction } from \"./GroupAction\";\nimport { Groupings } from \"./Grouping\";\nimport type { Route } from \"./GroupingMapping\";\nimport { RouteStep } from \"./GroupingMapping\";\nimport { Mappings } from \"./Mapping\";\nimport { MappingAction } from \"./MappingAction\";\nimport { PropertyMenu } from \"./PropertyMenu\";\n\nexport const GroupingMappingRouter = ({\n currentRoute,\n navigateTo,\n goBack,\n}: {\n currentRoute: Route;\n navigateTo: (toRoute: (prev: Route | undefined) => Route) => void;\n goBack: () => void;\n}) => {\n const { iModelId } = useGroupingMappingApiConfig();\n const { mapping, group, groupContextCustomUI, queryGenerationType } = currentRoute.groupingRouteFields;\n\n switch (currentRoute.step) {\n case RouteStep.Mappings:\n return (\n <Mappings\n onClickAddMapping={() =>\n navigateTo(() => ({ step: RouteStep.MappingsAction, title: \"Add Mapping\", groupingRouteFields: {} }))\n }\n onClickMappingTitle={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.Groups,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n onClickMappingModify={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.MappingsAction,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n />);\n case RouteStep.MappingsAction:\n return (<MappingAction mapping={mapping} onClickCancel={goBack} onSaveSuccess={goBack} />);\n case RouteStep.Groups:\n if (mapping) {\n return (\n <Groupings\n mapping={mapping}\n onClickAddGroup={(qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n groupingRouteFields: { ...prev?.groupingRouteFields, queryGenerationType: qType },\n title: \"Add Group\",\n }))\n }\n onClickGroupTitle={(g) =>\n navigateTo((prev) => ({\n step: RouteStep.Properties,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g },\n }))\n }\n onClickGroupModify={(g, qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, queryGenerationType: qType },\n }))\n }\n onClickRenderContextCustomUI={(ccUI, g) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n title: ccUI.displayName ?? \"\",\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, groupContextCustomUI: ccUI },\n }))\n }\n />\n );\n }\n return null;\n case RouteStep.GroupAction:\n if (mapping) {\n if (queryGenerationType) {\n return (\n <GroupAction\n mappingId={mapping.id}\n group={group}\n onClickCancel={goBack}\n onSaveSuccess={goBack}\n queryGenerationType={queryGenerationType}\n />\n );\n } else if (group && groupContextCustomUI) {\n return (\n React.createElement(groupContextCustomUI, {\n iModelId,\n mappingId: mapping.id,\n groupId: group.id,\n })\n );\n }\n }\n return null;\n case RouteStep.Properties:\n if (mapping && group) {\n return (\n <PropertyMenu\n iModelId={iModelId}\n mappingId={mapping.id}\n group={group}\n goBack={async () => goBack()}\n />\n );\n }\n return null;\n default:\n return null;\n }\n};\n"]}
@@ -1,7 +1,12 @@
1
1
  /// <reference types="react" />
2
- import type { CreateTypeFromInterface } from "../utils";
3
2
  import "./Mapping.scss";
4
3
  import type { Mapping } from "@itwin/insights-client";
4
+ import type { CreateTypeFromInterface } from "../utils";
5
5
  export declare type IMappingTyped = CreateTypeFromInterface<Mapping>;
6
- export declare const Mappings: () => JSX.Element;
6
+ export interface MappingsProps {
7
+ onClickAddMapping?: () => void;
8
+ onClickMappingTitle?: (mapping: Mapping) => void;
9
+ onClickMappingModify?: (mapping: Mapping) => void;
10
+ }
11
+ export declare const Mappings: ({ onClickAddMapping, onClickMappingTitle, onClickMappingModify, }: MappingsProps) => JSX.Element;
7
12
  //# sourceMappingURL=Mapping.d.ts.map
@@ -27,30 +27,18 @@ exports.Mappings = void 0;
27
27
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
28
28
  * See LICENSE.md in the project root for license terms and full copyright notice.
29
29
  *--------------------------------------------------------------------------------------------*/
30
- const presentation_frontend_1 = require("@itwin/presentation-frontend");
31
- const appui_react_1 = require("@itwin/appui-react");
32
30
  const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
33
31
  const itwinui_react_1 = require("@itwin/itwinui-react");
34
32
  const react_1 = __importStar(require("react"));
35
33
  const utils_1 = require("./utils");
36
34
  require("./Mapping.scss");
37
35
  const DeleteModal_1 = __importDefault(require("./DeleteModal"));
38
- const Grouping_1 = require("./Grouping");
39
- const MappingAction_1 = __importDefault(require("./MappingAction"));
40
36
  const MappingImportWizardModal_1 = require("./MappingImportWizardModal");
41
37
  const MappingClientContext_1 = require("./context/MappingClientContext");
42
38
  const BlockingOverlay_1 = require("./BlockingOverlay");
43
39
  const HorizontalTile_1 = require("./HorizontalTile");
44
40
  const viewerUtils_1 = require("./viewerUtils");
45
41
  const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
46
- var MappingView;
47
- (function (MappingView) {
48
- MappingView["MAPPINGS"] = "mappings";
49
- MappingView["GROUPS"] = "groups";
50
- MappingView["ADDING"] = "adding";
51
- MappingView["MODIFYING"] = "modifying";
52
- MappingView["IMPORT"] = "import";
53
- })(MappingView || (MappingView = {}));
54
42
  const fetchMappings = async (setMappings, iModelId, setIsLoading, getAccessToken, mappingsClient) => {
55
43
  try {
56
44
  setIsLoading(true);
@@ -69,99 +57,80 @@ const toggleExtraction = async (getAccessToken, mappingsClient, iModelId, mappin
69
57
  try {
70
58
  const newState = mapping.extractionEnabled;
71
59
  const accessToken = await getAccessToken();
72
- await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, { extractionEnabled: newState });
60
+ await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {
61
+ extractionEnabled: newState,
62
+ });
73
63
  }
74
64
  catch (error) {
75
65
  utils_1.handleError(error.status);
76
66
  }
77
67
  };
78
- const Mappings = () => {
79
- var _a, _b;
80
- const { getAccessToken } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
68
+ const Mappings = ({ onClickAddMapping, onClickMappingTitle, onClickMappingModify, }) => {
69
+ var _a;
70
+ const { getAccessToken, iModelId } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
81
71
  const mappingClient = MappingClientContext_1.useMappingClient();
82
- const iModelId = (_a = appui_react_1.useActiveIModelConnection()) === null || _a === void 0 ? void 0 : _a.iModelId;
83
72
  const [showDeleteModal, setShowDeleteModal] = react_1.useState(false);
84
73
  const [showImportModal, setShowImportModal] = react_1.useState(false);
85
74
  const [showBlockingOverlay, setShowBlockingOverlay] = react_1.useState(false);
86
- const [mappingView, setMappingView] = react_1.useState(MappingView.MAPPINGS);
87
75
  const [selectedMapping, setSelectedMapping] = react_1.useState(undefined);
88
76
  const [isLoading, setIsLoading] = react_1.useState(true);
89
77
  const [mappings, setMappings] = react_1.useState([]);
90
78
  react_1.useEffect(() => {
91
79
  void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
92
80
  }, [getAccessToken, mappingClient, iModelId, setIsLoading]);
93
- react_1.useEffect(() => {
94
- const removeListener = presentation_frontend_1.Presentation.selection.selectionChange.addListener(utils_1.onSelectionChanged);
95
- return () => {
96
- removeListener();
97
- };
98
- }, []);
99
81
  const refresh = react_1.useCallback(async () => {
100
82
  viewerUtils_1.clearAll();
101
- setMappingView(MappingView.MAPPINGS);
102
83
  setSelectedMapping(undefined);
103
84
  setMappings([]);
104
85
  await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);
105
86
  }, [getAccessToken, mappingClient, iModelId, setMappings]);
106
- const addMapping = async () => {
107
- setMappingView(MappingView.ADDING);
108
- };
109
- switch (mappingView) {
110
- case MappingView.ADDING:
111
- return react_1.default.createElement(MappingAction_1.default, { iModelId: iModelId, returnFn: refresh });
112
- case MappingView.MODIFYING:
113
- return (react_1.default.createElement(MappingAction_1.default, { iModelId: iModelId, mapping: selectedMapping, returnFn: refresh }));
114
- case MappingView.GROUPS:
115
- return (react_1.default.createElement(Grouping_1.Groupings, { mapping: selectedMapping, goBack: refresh }));
116
- default:
117
- return (react_1.default.createElement(react_1.default.Fragment, null,
118
- react_1.default.createElement(BlockingOverlay_1.BlockingOverlay, { isVisible: showBlockingOverlay }),
119
- react_1.default.createElement(utils_1.WidgetHeader, { title: "Mappings" }),
120
- react_1.default.createElement(itwinui_react_1.Surface, { className: "gmw-mappings-container" },
121
- react_1.default.createElement("div", { className: "gmw-table-toolbar" },
122
- react_1.default.createElement("div", { className: "gmw-button-spacing" },
123
- react_1.default.createElement(itwinui_react_1.Button, { startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgAdd, null), onClick: async () => addMapping(), styleType: "high-visibility" }, "New"),
124
- react_1.default.createElement(itwinui_react_1.IconButton, { title: "Import Mappings", onClick: () => setShowImportModal(true) },
125
- react_1.default.createElement(itwinui_icons_react_1.SvgImport, null)))),
126
- isLoading ? (react_1.default.createElement(utils_1.LoadingOverlay, null)) : mappings.length === 0 ? (react_1.default.createElement(utils_1.EmptyMessage, { message: "No Mappings available." })) : (react_1.default.createElement("div", { className: "gmw-mappings-list" }, mappings
127
- .sort((a, b) => { var _a; return (_a = a.mappingName.localeCompare(b.mappingName)) !== null && _a !== void 0 ? _a : 1; })
128
- .map((mapping) => {
129
- var _a, _b;
130
- return (react_1.default.createElement(HorizontalTile_1.HorizontalTile, { key: mapping.id, title: mapping.mappingName ? mapping.mappingName : "Untitled", subText: (_a = mapping.description) !== null && _a !== void 0 ? _a : "", subtextToolTip: (_b = mapping.description) !== null && _b !== void 0 ? _b : "", titleTooltip: mapping.mappingName, onClickTitle: () => {
131
- setSelectedMapping(mapping);
132
- setMappingView(MappingView.GROUPS);
133
- }, actionGroup: react_1.default.createElement(itwinui_react_1.DropdownMenu, { menuItems: (close) => [
134
- react_1.default.createElement(itwinui_react_1.MenuItem, { key: 0, onClick: () => {
135
- setSelectedMapping(mapping);
136
- setMappingView(MappingView.MODIFYING);
137
- }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgEdit, null) }, "Modify"),
138
- react_1.default.createElement(itwinui_react_1.MenuItem, { key: 1, onClick: async () => {
139
- setSelectedMapping(mapping);
140
- setShowBlockingOverlay(true);
141
- close();
142
- await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);
143
- await refresh();
144
- setShowBlockingOverlay(false);
145
- }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgProcess, null) }, mapping.extractionEnabled ? "Disable extraction" : "Enable extraction"),
146
- react_1.default.createElement(itwinui_react_1.MenuItem, { key: 2, onClick: () => {
147
- setSelectedMapping(mapping);
148
- setShowDeleteModal(true);
149
- close();
150
- }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgDelete, null) }, "Remove"),
151
- ] },
152
- react_1.default.createElement(itwinui_react_1.IconButton, { styleType: "borderless" },
153
- react_1.default.createElement(itwinui_icons_react_1.SvgMore, { style: {
154
- width: "16px",
155
- height: "16px",
156
- } }))) }));
157
- })))),
158
- react_1.default.createElement(DeleteModal_1.default, { entityName: (_b = selectedMapping === null || selectedMapping === void 0 ? void 0 : selectedMapping.mappingName) !== null && _b !== void 0 ? _b : "", show: showDeleteModal, setShow: setShowDeleteModal, onDelete: async () => {
159
- var _a;
160
- const accessToken = await getAccessToken();
161
- await mappingClient.deleteMapping(accessToken, iModelId, (_a = selectedMapping === null || selectedMapping === void 0 ? void 0 : selectedMapping.id) !== null && _a !== void 0 ? _a : "");
162
- }, refresh: refresh }),
163
- react_1.default.createElement(MappingImportWizardModal_1.MappingImportWizardModal, { show: showImportModal, setShow: setShowImportModal, onFinish: refresh })));
164
- }
87
+ return (react_1.default.createElement(react_1.default.Fragment, null,
88
+ react_1.default.createElement(BlockingOverlay_1.BlockingOverlay, { isVisible: showBlockingOverlay }),
89
+ react_1.default.createElement(itwinui_react_1.Surface, { className: "gmw-mappings-container" },
90
+ react_1.default.createElement("div", { className: "gmw-table-toolbar" },
91
+ react_1.default.createElement("div", { className: "gmw-button-spacing" },
92
+ onClickAddMapping &&
93
+ react_1.default.createElement(itwinui_react_1.Button, { startIcon: react_1.default.createElement(itwinui_icons_react_1.SvgAdd, null), onClick: onClickAddMapping, styleType: "high-visibility" }, "New"),
94
+ react_1.default.createElement(itwinui_react_1.IconButton, { title: "Import Mappings", onClick: () => setShowImportModal(true) },
95
+ react_1.default.createElement(itwinui_icons_react_1.SvgImport, null))),
96
+ react_1.default.createElement(itwinui_react_1.IconButton, { title: "Refresh", onClick: refresh, disabled: isLoading, styleType: 'borderless' },
97
+ react_1.default.createElement(itwinui_icons_react_1.SvgRefresh, null))),
98
+ isLoading ? (react_1.default.createElement(utils_1.LoadingOverlay, null)) : mappings.length === 0 ? (react_1.default.createElement(utils_1.EmptyMessage, { message: "No Mappings available." })) : (react_1.default.createElement("div", { className: "gmw-mappings-list" }, mappings
99
+ .sort((a, b) => { var _a; return (_a = a.mappingName.localeCompare(b.mappingName)) !== null && _a !== void 0 ? _a : 1; })
100
+ .map((mapping) => {
101
+ var _a, _b;
102
+ return (react_1.default.createElement(HorizontalTile_1.HorizontalTile, { key: mapping.id, title: mapping.mappingName ? mapping.mappingName : "Untitled", subText: (_a = mapping.description) !== null && _a !== void 0 ? _a : "", subtextToolTip: (_b = mapping.description) !== null && _b !== void 0 ? _b : "", titleTooltip: mapping.mappingName, onClickTitle: () => onClickMappingTitle ? onClickMappingTitle(mapping) : undefined, actionGroup: react_1.default.createElement(itwinui_react_1.DropdownMenu, { menuItems: (close) => [
103
+ onClickMappingModify ? (react_1.default.createElement(itwinui_react_1.MenuItem, { key: 0, onClick: () => {
104
+ onClickMappingModify(mapping);
105
+ }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgEdit, null) }, "Modify")) : [],
106
+ react_1.default.createElement(itwinui_react_1.MenuItem, { key: 1, onClick: async () => {
107
+ setSelectedMapping(mapping);
108
+ setShowBlockingOverlay(true);
109
+ close();
110
+ await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);
111
+ await refresh();
112
+ setShowBlockingOverlay(false);
113
+ }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgProcess, null) }, mapping.extractionEnabled
114
+ ? "Disable extraction"
115
+ : "Enable extraction"),
116
+ react_1.default.createElement(itwinui_react_1.MenuItem, { key: 2, onClick: () => {
117
+ setSelectedMapping(mapping);
118
+ setShowDeleteModal(true);
119
+ close();
120
+ }, icon: react_1.default.createElement(itwinui_icons_react_1.SvgDelete, null) }, "Remove"),
121
+ ].flatMap((m) => m) },
122
+ react_1.default.createElement(itwinui_react_1.IconButton, { styleType: "borderless" },
123
+ react_1.default.createElement(itwinui_icons_react_1.SvgMore, { style: {
124
+ width: "16px",
125
+ height: "16px",
126
+ } }))) }));
127
+ })))),
128
+ react_1.default.createElement(DeleteModal_1.default, { entityName: (_a = selectedMapping === null || selectedMapping === void 0 ? void 0 : selectedMapping.mappingName) !== null && _a !== void 0 ? _a : "", show: showDeleteModal, setShow: setShowDeleteModal, onDelete: async () => {
129
+ var _a;
130
+ const accessToken = await getAccessToken();
131
+ await mappingClient.deleteMapping(accessToken, iModelId, (_a = selectedMapping === null || selectedMapping === void 0 ? void 0 : selectedMapping.id) !== null && _a !== void 0 ? _a : "");
132
+ }, refresh: refresh }),
133
+ react_1.default.createElement(MappingImportWizardModal_1.MappingImportWizardModal, { show: showImportModal, setShow: setShowImportModal, onFinish: refresh })));
165
134
  };
166
135
  exports.Mappings = Mappings;
167
136
  //# sourceMappingURL=Mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.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 { Presentation } from \"@itwin/presentation-frontend\";\nimport { useActiveIModelConnection } from \"@itwin/appui-react\";\nimport {\n SvgAdd,\n SvgDelete,\n SvgEdit,\n SvgImport,\n SvgMore,\n SvgProcess,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n DropdownMenu,\n IconButton,\n MenuItem,\n Surface,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { EmptyMessage, handleError, LoadingOverlay, onSelectionChanged, WidgetHeader } from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { Groupings } from \"./Grouping\";\nimport MappingAction from \"./MappingAction\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { clearAll } from \"./viewerUtils\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type IMappingTyped = CreateTypeFromInterface<Mapping>;\n\nenum MappingView {\n MAPPINGS = \"mappings\",\n GROUPS = \"groups\",\n ADDING = \"adding\",\n MODIFYING = \"modifying\",\n IMPORT = \"import\",\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingsClient.updateMapping(\n accessToken,\n iModelId,\n mapping.id,\n { extractionEnabled: newState }\n );\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = () => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const iModelId = useActiveIModelConnection()?.iModelId as string;\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] = useState<boolean>(false);\n const [mappingView, setMappingView] = useState<MappingView>(\n MappingView.MAPPINGS\n );\n const [selectedMapping, setSelectedMapping] = useState<Mapping | undefined>(undefined);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n useEffect(() => {\n const removeListener =\n Presentation.selection.selectionChange.addListener(onSelectionChanged);\n return () => {\n removeListener();\n };\n }, []);\n\n const refresh = useCallback(async () => {\n clearAll();\n setMappingView(MappingView.MAPPINGS);\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(setMappings, iModelId, setIsLoading, getAccessToken, mappingClient);\n }, [getAccessToken, mappingClient, iModelId, setMappings]);\n\n const addMapping = async () => {\n setMappingView(MappingView.ADDING);\n };\n\n switch (mappingView) {\n case MappingView.ADDING:\n return <MappingAction iModelId={iModelId} returnFn={refresh} />;\n case MappingView.MODIFYING:\n return (\n <MappingAction\n iModelId={iModelId}\n mapping={selectedMapping}\n returnFn={refresh}\n />\n );\n case MappingView.GROUPS:\n return (\n <Groupings\n mapping={selectedMapping as Mapping}\n goBack={refresh}\n />\n );\n default:\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <WidgetHeader title=\"Mappings\" />\n <Surface className=\"gmw-mappings-container\">\n <div className=\"gmw-table-toolbar\">\n <div className=\"gmw-button-spacing\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <IconButton title=\"Import Mappings\"\n onClick={() => setShowImportModal(true)}>\n <SvgImport />\n </IconButton>\n </div>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message=\"No Mappings available.\" />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings\n .sort((a, b) => a.mappingName.localeCompare(b.mappingName) ?? 1)\n .map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={mapping.mappingName ? mapping.mappingName : \"Untitled\"}\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={() => {\n setSelectedMapping(mapping);\n setMappingView(MappingView.GROUPS);\n }}\n actionGroup={\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(mapping);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(mapping);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {mapping.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(mapping);\n setShowDeleteModal(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 </div>\n )}\n </Surface>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(\n accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n }\n};\n"]}
1
+ {"version":3,"file":"Mapping.js","sourceRoot":"","sources":["../../../../src/widget/components/Mapping.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 SvgImport,\n SvgMore,\n SvgProcess,\n SvgRefresh,\n} from \"@itwin/itwinui-icons-react\";\nimport {\n Button,\n DropdownMenu,\n IconButton,\n MenuItem,\n Surface,\n} from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useState } from \"react\";\nimport {\n EmptyMessage,\n handleError,\n LoadingOverlay,\n} from \"./utils\";\nimport \"./Mapping.scss\";\nimport DeleteModal from \"./DeleteModal\";\nimport { MappingImportWizardModal } from \"./MappingImportWizardModal\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { IMappingsClient, Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { clearAll } from \"./viewerUtils\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport type { CreateTypeFromInterface } from \"../utils\";\n\nexport type IMappingTyped = CreateTypeFromInterface<Mapping>;\n\nexport interface MappingsProps {\n onClickAddMapping?: () => void;\n onClickMappingTitle?: (mapping: Mapping) => void;\n onClickMappingModify?: (mapping: Mapping) => void;\n}\n\nconst fetchMappings = async (\n setMappings: React.Dispatch<React.SetStateAction<Mapping[]>>,\n iModelId: string,\n setIsLoading: React.Dispatch<React.SetStateAction<boolean>>,\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingsClient.getMappings(accessToken, iModelId);\n setMappings(mappings);\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n};\n\nconst toggleExtraction = async (\n getAccessToken: GetAccessTokenFn,\n mappingsClient: IMappingsClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = mapping.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingsClient.updateMapping(accessToken, iModelId, mapping.id, {\n extractionEnabled: newState,\n });\n } catch (error: any) {\n handleError(error.status);\n }\n};\n\nexport const Mappings = ({\n onClickAddMapping,\n onClickMappingTitle,\n onClickMappingModify,\n}: MappingsProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [showDeleteModal, setShowDeleteModal] = useState<boolean>(false);\n const [showImportModal, setShowImportModal] = useState<boolean>(false);\n const [showBlockingOverlay, setShowBlockingOverlay] =\n useState<boolean>(false);\n const [selectedMapping, setSelectedMapping] = useState<Mapping | undefined>(\n undefined\n );\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [mappings, setMappings] = useState<Mapping[]>([]);\n\n useEffect(() => {\n void fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setIsLoading]);\n\n const refresh = useCallback(async () => {\n clearAll();\n setSelectedMapping(undefined);\n setMappings([]);\n await fetchMappings(\n setMappings,\n iModelId,\n setIsLoading,\n getAccessToken,\n mappingClient\n );\n }, [getAccessToken, mappingClient, iModelId, setMappings]);\n\n return (\n <>\n <BlockingOverlay isVisible={showBlockingOverlay} />\n <Surface className=\"gmw-mappings-container\">\n <div className=\"gmw-table-toolbar\">\n <div className=\"gmw-button-spacing\">\n {onClickAddMapping &&\n <Button\n startIcon={<SvgAdd />}\n onClick={onClickAddMapping}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n }\n <IconButton\n title=\"Import Mappings\"\n onClick={() => setShowImportModal(true)}\n >\n <SvgImport />\n </IconButton>\n </div>\n <IconButton\n title=\"Refresh\"\n onClick={refresh}\n disabled={isLoading}\n styleType='borderless'\n >\n <SvgRefresh />\n </IconButton>\n </div>\n {isLoading ? (\n <LoadingOverlay />\n ) : mappings.length === 0 ? (\n <EmptyMessage message=\"No Mappings available.\" />\n ) : (\n <div className=\"gmw-mappings-list\">\n {mappings\n .sort(\n (a, b) => a.mappingName.localeCompare(b.mappingName) ?? 1\n )\n .map((mapping) => (\n <HorizontalTile\n key={mapping.id}\n title={\n mapping.mappingName ? mapping.mappingName : \"Untitled\"\n }\n subText={mapping.description ?? \"\"}\n subtextToolTip={mapping.description ?? \"\"}\n titleTooltip={mapping.mappingName}\n onClickTitle={() => onClickMappingTitle ? onClickMappingTitle(mapping) : undefined}\n actionGroup={\n <DropdownMenu\n menuItems={(close: () => void) => [\n onClickMappingModify ? (\n <MenuItem\n key={0}\n onClick={() => {\n onClickMappingModify(mapping);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>\n ) : [],\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(mapping);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(\n getAccessToken,\n mappingClient,\n iModelId,\n mapping\n );\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {mapping.extractionEnabled\n ? \"Disable extraction\"\n : \"Enable extraction\"}\n </MenuItem>,\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(mapping);\n setShowDeleteModal(true);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((m) => m)}\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 </div>\n )}\n </Surface>\n <DeleteModal\n entityName={selectedMapping?.mappingName ?? \"\"}\n show={showDeleteModal}\n setShow={setShowDeleteModal}\n onDelete={async () => {\n const accessToken = await getAccessToken();\n await mappingClient.deleteMapping(\n accessToken,\n iModelId,\n selectedMapping?.id ?? \"\"\n );\n }}\n refresh={refresh}\n />\n <MappingImportWizardModal\n show={showImportModal}\n setShow={setShowImportModal}\n onFinish={refresh}\n />\n </>\n );\n};\n"]}
@@ -1,11 +1,15 @@
1
1
  /// <reference types="react" />
2
2
  import "./MappingAction.scss";
3
3
  import type { Mapping } from "@itwin/insights-client";
4
- interface MappingActionProps {
5
- iModelId: string;
4
+ declare const defaultDisplayStrings: {
5
+ mappingDetails: string;
6
+ };
7
+ export interface MappingActionProps {
6
8
  mapping?: Mapping;
7
- returnFn: () => Promise<void>;
9
+ onSaveSuccess: () => void;
10
+ onClickCancel?: () => void;
11
+ displayStrings?: Partial<typeof defaultDisplayStrings>;
8
12
  }
9
- declare const MappingAction: ({ iModelId, mapping, returnFn }: MappingActionProps) => JSX.Element;
10
- export default MappingAction;
13
+ export declare const MappingAction: ({ mapping, onSaveSuccess, onClickCancel, displayStrings: userDisplayStrings }: MappingActionProps) => JSX.Element;
14
+ export {};
11
15
  //# sourceMappingURL=MappingAction.d.ts.map
@@ -22,6 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.MappingAction = void 0;
25
26
  /*---------------------------------------------------------------------------------------------
26
27
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
27
28
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -34,9 +35,12 @@ const utils_1 = require("./utils");
34
35
  require("./MappingAction.scss");
35
36
  const MappingClientContext_1 = require("./context/MappingClientContext");
36
37
  const GroupingApiConfigContext_1 = require("./context/GroupingApiConfigContext");
37
- const MappingAction = ({ iModelId, mapping, returnFn }) => {
38
+ const defaultDisplayStrings = {
39
+ mappingDetails: "Mapping Details",
40
+ };
41
+ const MappingAction = ({ mapping, onSaveSuccess, onClickCancel, displayStrings: userDisplayStrings }) => {
38
42
  var _a, _b, _c;
39
- const { getAccessToken } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
43
+ const { getAccessToken, iModelId } = GroupingApiConfigContext_1.useGroupingMappingApiConfig();
40
44
  const mappingClient = MappingClientContext_1.useMappingClient();
41
45
  const [values, setValues] = react_1.useState({
42
46
  name: (_a = mapping === null || mapping === void 0 ? void 0 : mapping.mappingName) !== null && _a !== void 0 ? _a : "",
@@ -45,8 +49,9 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
45
49
  });
46
50
  const [validator, showValidationMessage] = useValidator_1.default();
47
51
  const [isLoading, setIsLoading] = react_1.useState(false);
48
- // TODO ERRORED STATE
52
+ const displayStrings = { ...defaultDisplayStrings, ...userDisplayStrings };
49
53
  const onSave = async () => {
54
+ var _a, _b, _c;
50
55
  try {
51
56
  if (!validator.allValid()) {
52
57
  showValidationMessage(true);
@@ -65,17 +70,23 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
65
70
  description: values.description,
66
71
  extractionEnabled: values.extractionEnabled,
67
72
  });
68
- await returnFn();
73
+ setValues({
74
+ name: (_a = mapping === null || mapping === void 0 ? void 0 : mapping.mappingName) !== null && _a !== void 0 ? _a : "",
75
+ description: (_b = mapping === null || mapping === void 0 ? void 0 : mapping.description) !== null && _b !== void 0 ? _b : "",
76
+ extractionEnabled: (_c = mapping === null || mapping === void 0 ? void 0 : mapping.extractionEnabled) !== null && _c !== void 0 ? _c : true,
77
+ });
78
+ onSaveSuccess();
69
79
  }
70
80
  catch (error) {
71
81
  utils_1.handleError(error.status);
82
+ }
83
+ finally {
72
84
  setIsLoading(false);
73
85
  }
74
86
  };
75
87
  return (react_1.default.createElement(react_1.default.Fragment, null,
76
- react_1.default.createElement(utils_1.WidgetHeader, { title: mapping ? "Modify Mapping" : "Add Mapping", returnFn: returnFn }),
77
88
  react_1.default.createElement("div", { className: 'gmw-details-form-container' },
78
- react_1.default.createElement(itwinui_react_1.Fieldset, { legend: 'Mapping Details', className: 'gmw-details-form' },
89
+ react_1.default.createElement(itwinui_react_1.Fieldset, { legend: displayStrings.mappingDetails, className: 'gmw-details-form' },
79
90
  react_1.default.createElement(itwinui_react_1.Small, { className: 'gmw-field-legend' }, "Asterisk * indicates mandatory fields."),
80
91
  react_1.default.createElement(itwinui_react_1.LabeledInput, { id: 'name', name: 'name', label: 'Name', value: values.name, required: true, onChange: (event) => {
81
92
  utils_1.handleInputChange(event, values, setValues);
@@ -94,7 +105,7 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
94
105
  react_1.default.createElement(itwinui_react_1.ToggleSwitch, { id: 'extractionEnabled', name: 'extractionEnabled', label: 'Extract data from iModel', labelPosition: "right", checked: values.extractionEnabled, onChange: (event) => {
95
106
  setValues({ ...values, extractionEnabled: event.currentTarget.checked });
96
107
  } }))),
97
- react_1.default.createElement(ActionPanel_1.default, { onSave: onSave, onCancel: returnFn, isSavingDisabled: !values.name, isLoading: isLoading })));
108
+ react_1.default.createElement(ActionPanel_1.default, { onSave: onSave, onCancel: onClickCancel, isSavingDisabled: !values.name, isLoading: isLoading })));
98
109
  };
99
- exports.default = MappingAction;
110
+ exports.MappingAction = MappingAction;
100
111
  //# sourceMappingURL=MappingAction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange, WidgetHeader } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\ninterface MappingActionProps {\n iModelId: string;\n mapping?: Mapping;\n returnFn: () => Promise<void>;\n}\n\nconst MappingAction = ({ iModelId, mapping, returnFn }: MappingActionProps) => {\n const { getAccessToken } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n // TODO ERRORED STATE\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const accessToken = await getAccessToken();\n mapping\n ? await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await mappingClient.createMapping(accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n await returnFn();\n } catch (error: any) {\n handleError(error.status);\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <WidgetHeader\n title={mapping ? \"Modify Mapping\" : \"Add Mapping\"}\n returnFn={returnFn}\n />\n <div className='gmw-details-form-container'>\n <Fieldset legend='Mapping Details' className='gmw-details-form'>\n <Small className='gmw-field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extract data from iModel'\n labelPosition=\"right\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={returnFn}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n\nexport default MappingAction;\n"]}
1
+ {"version":3,"file":"MappingAction.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingAction.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 { Fieldset, LabeledInput, Small, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport React, { useState } from \"react\";\nimport ActionPanel from \"./ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { handleError, handleInputChange } from \"./utils\";\nimport \"./MappingAction.scss\";\nimport { useMappingClient } from \"./context/MappingClientContext\";\nimport type { Mapping } from \"@itwin/insights-client\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nconst defaultDisplayStrings = {\n mappingDetails: \"Mapping Details\",\n};\n\nexport interface MappingActionProps {\n mapping?: Mapping;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n displayStrings?: Partial<typeof defaultDisplayStrings>;\n}\n\nexport const MappingAction = ({ mapping, onSaveSuccess, onClickCancel, displayStrings: userDisplayStrings }: MappingActionProps) => {\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const mappingClient = useMappingClient();\n const [values, setValues] = useState({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n const [validator, showValidationMessage] = useValidator();\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const displayStrings = { ...defaultDisplayStrings, ...userDisplayStrings };\n\n const onSave = async () => {\n try {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n setIsLoading(true);\n const accessToken = await getAccessToken();\n mapping\n ? await mappingClient.updateMapping(accessToken, iModelId, mapping.id, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n })\n : await mappingClient.createMapping(accessToken, iModelId, {\n mappingName: values.name,\n description: values.description,\n extractionEnabled: values.extractionEnabled,\n });\n setValues({\n name: mapping?.mappingName ?? \"\",\n description: mapping?.description ?? \"\",\n extractionEnabled: mapping?.extractionEnabled ?? true,\n });\n onSaveSuccess();\n } catch (error: any) {\n handleError(error.status);\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <>\n <div className='gmw-details-form-container'>\n <Fieldset legend={displayStrings.mappingDetails} className='gmw-details-form'>\n <Small className='gmw-field-legend'>\n Asterisk * indicates mandatory fields.\n </Small>\n <LabeledInput\n id='name'\n name='name'\n label='Name'\n value={values.name}\n required\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n message={validator.message(\"name\", values.name, NAME_REQUIREMENTS)}\n status={\n validator.message(\"name\", values.name, NAME_REQUIREMENTS)\n ? \"negative\"\n : undefined\n }\n onBlur={() => {\n validator.showMessageFor(\"name\");\n }}\n onBlurCapture={(event) => {\n handleInputChange(event, values, setValues);\n validator.showMessageFor(\"name\");\n }}\n />\n <LabeledInput\n id='description'\n name='description'\n label='Description'\n value={values.description}\n onChange={(event) => {\n handleInputChange(event, values, setValues);\n }}\n />\n <ToggleSwitch\n id='extractionEnabled'\n name='extractionEnabled'\n label='Extract data from iModel'\n labelPosition=\"right\"\n checked={values.extractionEnabled}\n onChange={(event) => {\n setValues({ ...values, extractionEnabled: event.currentTarget.checked });\n }}\n />\n </Fieldset>\n </div>\n <ActionPanel\n onSave={onSave}\n onCancel={onClickCancel}\n isSavingDisabled={!values.name}\n isLoading={isLoading}\n />\n </>\n );\n};\n"]}
@@ -117,13 +117,8 @@ class QueryBuilder {
117
117
  }
118
118
  needsQuote(propertyField) {
119
119
  // list of property types that need quote around property value
120
- if (propertyField.type.typeName.toLowerCase() === "string") {
121
- return true;
122
- }
123
- if (propertyField.type.typeName.toLowerCase() === "uri") {
124
- return true;
125
- }
126
- return false;
120
+ const typeName = propertyField.type.typeName.toLowerCase();
121
+ return "string" === typeName || "uri" === typeName;
127
122
  }
128
123
  addRelatedToQuery(unionIndex, propertyField, propertyName, propertyValue) {
129
124
  var _a, _b;