@itwin/grouping-mapping-widget 0.5.5 → 0.5.8

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 (163) hide show
  1. package/lib/cjs/grouping-mapping-widget.d.ts +2 -2
  2. package/lib/cjs/grouping-mapping-widget.js +1 -1
  3. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  4. package/lib/cjs/widget/components/ActionPanel.js +2 -2
  5. package/lib/cjs/widget/components/ActionPanel.js.map +1 -1
  6. package/lib/cjs/widget/components/ActionPanel.scss +1 -1
  7. package/lib/cjs/widget/components/BlockingOverlay.js +2 -2
  8. package/lib/cjs/widget/components/BlockingOverlay.js.map +1 -1
  9. package/lib/cjs/widget/components/BlockingOverlay.scss +3 -3
  10. package/lib/cjs/widget/components/CalculatedPropertyAction.js +5 -5
  11. package/lib/cjs/widget/components/CalculatedPropertyAction.js.map +1 -1
  12. package/lib/cjs/widget/components/CalculatedPropertyAction.scss +4 -4
  13. package/lib/cjs/widget/components/ConfirmMappingsImport.js +12 -12
  14. package/lib/cjs/widget/components/ConfirmMappingsImport.js.map +1 -1
  15. package/lib/cjs/widget/components/ConfirmMappingsImport.scss +10 -10
  16. package/lib/cjs/widget/components/CustomCalculationAction.js +3 -3
  17. package/lib/cjs/widget/components/CustomCalculationAction.js.map +1 -1
  18. package/lib/cjs/widget/components/CustomCalculationAction.scss +2 -2
  19. package/lib/cjs/widget/components/DeleteModal.js +2 -2
  20. package/lib/cjs/widget/components/DeleteModal.js.map +1 -1
  21. package/lib/cjs/widget/components/DeleteModal.scss +2 -2
  22. package/lib/cjs/widget/components/GroupAction.js +8 -8
  23. package/lib/cjs/widget/components/GroupAction.js.map +1 -1
  24. package/lib/cjs/widget/components/GroupAction.scss +6 -6
  25. package/lib/cjs/widget/components/GroupPropertyAction.js +6 -6
  26. package/lib/cjs/widget/components/GroupPropertyAction.js.map +1 -1
  27. package/lib/cjs/widget/components/GroupPropertyAction.scss +6 -10
  28. package/lib/cjs/widget/components/GroupQueryBuilder.scss +4 -4
  29. package/lib/cjs/widget/components/GroupQueryBuilderContainer.js +3 -3
  30. package/lib/cjs/widget/components/GroupQueryBuilderContainer.js.map +1 -1
  31. package/lib/cjs/widget/components/Grouping.js +14 -16
  32. package/lib/cjs/widget/components/Grouping.js.map +1 -1
  33. package/lib/cjs/widget/components/Grouping.scss +8 -7
  34. package/lib/cjs/widget/components/GroupingMapping.js +1 -1
  35. package/lib/cjs/widget/components/GroupingMapping.js.map +1 -1
  36. package/lib/cjs/widget/components/GroupingMapping.scss +4 -10
  37. package/lib/cjs/widget/components/HorizontalTile.d.ts +13 -0
  38. package/lib/cjs/widget/components/HorizontalTile.js +18 -0
  39. package/lib/cjs/widget/components/HorizontalTile.js.map +1 -0
  40. package/lib/{esm/widget/components/GroupTile.scss → cjs/widget/components/HorizontalTile.scss} +4 -4
  41. package/lib/cjs/widget/components/Mapping.js +38 -58
  42. package/lib/cjs/widget/components/Mapping.js.map +1 -1
  43. package/lib/cjs/widget/components/Mapping.scss +22 -8
  44. package/lib/cjs/widget/components/MappingAction.js +3 -3
  45. package/lib/cjs/widget/components/MappingAction.js.map +1 -1
  46. package/lib/cjs/widget/components/MappingAction.scss +2 -2
  47. package/lib/cjs/widget/components/MappingImportWizardModal.js +2 -2
  48. package/lib/cjs/widget/components/MappingImportWizardModal.js.map +1 -1
  49. package/lib/cjs/widget/components/MappingImportWizardModal.scss +3 -3
  50. package/lib/cjs/widget/components/PropertyMenu.js +9 -9
  51. package/lib/cjs/widget/components/PropertyMenu.js.map +1 -1
  52. package/lib/cjs/widget/components/PropertyMenu.scss +7 -7
  53. package/lib/cjs/widget/components/SelectIModel.js +3 -3
  54. package/lib/cjs/widget/components/SelectIModel.js.map +1 -1
  55. package/lib/cjs/widget/components/SelectIModel.scss +2 -6
  56. package/lib/cjs/widget/components/SelectMapping.scss +2 -2
  57. package/lib/cjs/widget/components/SelectMappings.js +3 -3
  58. package/lib/cjs/widget/components/SelectMappings.js.map +1 -1
  59. package/lib/cjs/widget/components/SelectProject.js +28 -20
  60. package/lib/cjs/widget/components/SelectProject.js.map +1 -1
  61. package/lib/cjs/widget/components/SelectProject.scss +5 -5
  62. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.d.ts +0 -1
  63. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.js +0 -1
  64. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.js.map +1 -1
  65. package/lib/cjs/widget/components/property-grid/PropertyGrid.js +6 -6
  66. package/lib/cjs/widget/components/property-grid/PropertyGrid.js.map +1 -1
  67. package/lib/cjs/widget/components/property-grid/PropertyGrid.scss +12 -12
  68. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js +1 -1
  69. package/lib/cjs/widget/components/property-grid/PropertyGridWrapper.js.map +1 -1
  70. package/lib/cjs/widget/components/property-grid/PropertyList.js +1 -1
  71. package/lib/cjs/widget/components/property-grid/PropertyList.js.map +1 -1
  72. package/lib/cjs/widget/components/property-grid/PropertyView.js +5 -5
  73. package/lib/cjs/widget/components/property-grid/PropertyView.js.map +1 -1
  74. package/lib/cjs/widget/components/property-grid/PropertyView.scss +13 -62
  75. package/lib/cjs/widget/components/utils.js +6 -6
  76. package/lib/cjs/widget/components/utils.js.map +1 -1
  77. package/lib/cjs/widget/components/utils.scss +6 -6
  78. package/lib/esm/grouping-mapping-widget.d.ts +2 -2
  79. package/lib/esm/grouping-mapping-widget.js +1 -1
  80. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  81. package/lib/esm/widget/components/ActionPanel.js +2 -2
  82. package/lib/esm/widget/components/ActionPanel.js.map +1 -1
  83. package/lib/esm/widget/components/ActionPanel.scss +1 -1
  84. package/lib/esm/widget/components/BlockingOverlay.js +2 -2
  85. package/lib/esm/widget/components/BlockingOverlay.js.map +1 -1
  86. package/lib/esm/widget/components/BlockingOverlay.scss +3 -3
  87. package/lib/esm/widget/components/CalculatedPropertyAction.js +5 -5
  88. package/lib/esm/widget/components/CalculatedPropertyAction.js.map +1 -1
  89. package/lib/esm/widget/components/CalculatedPropertyAction.scss +4 -4
  90. package/lib/esm/widget/components/ConfirmMappingsImport.js +12 -12
  91. package/lib/esm/widget/components/ConfirmMappingsImport.js.map +1 -1
  92. package/lib/esm/widget/components/ConfirmMappingsImport.scss +10 -10
  93. package/lib/esm/widget/components/CustomCalculationAction.js +3 -3
  94. package/lib/esm/widget/components/CustomCalculationAction.js.map +1 -1
  95. package/lib/esm/widget/components/CustomCalculationAction.scss +2 -2
  96. package/lib/esm/widget/components/DeleteModal.js +2 -2
  97. package/lib/esm/widget/components/DeleteModal.js.map +1 -1
  98. package/lib/esm/widget/components/DeleteModal.scss +2 -2
  99. package/lib/esm/widget/components/GroupAction.js +8 -8
  100. package/lib/esm/widget/components/GroupAction.js.map +1 -1
  101. package/lib/esm/widget/components/GroupAction.scss +6 -6
  102. package/lib/esm/widget/components/GroupPropertyAction.js +6 -6
  103. package/lib/esm/widget/components/GroupPropertyAction.js.map +1 -1
  104. package/lib/esm/widget/components/GroupPropertyAction.scss +6 -10
  105. package/lib/esm/widget/components/GroupQueryBuilder.scss +4 -4
  106. package/lib/esm/widget/components/GroupQueryBuilderContainer.js +3 -3
  107. package/lib/esm/widget/components/GroupQueryBuilderContainer.js.map +1 -1
  108. package/lib/esm/widget/components/Grouping.js +14 -16
  109. package/lib/esm/widget/components/Grouping.js.map +1 -1
  110. package/lib/esm/widget/components/Grouping.scss +8 -7
  111. package/lib/esm/widget/components/GroupingMapping.js +1 -1
  112. package/lib/esm/widget/components/GroupingMapping.js.map +1 -1
  113. package/lib/esm/widget/components/GroupingMapping.scss +4 -10
  114. package/lib/esm/widget/components/HorizontalTile.d.ts +13 -0
  115. package/lib/esm/widget/components/HorizontalTile.js +11 -0
  116. package/lib/esm/widget/components/HorizontalTile.js.map +1 -0
  117. package/lib/{cjs/widget/components/GroupTile.scss → esm/widget/components/HorizontalTile.scss} +4 -4
  118. package/lib/esm/widget/components/Mapping.js +41 -61
  119. package/lib/esm/widget/components/Mapping.js.map +1 -1
  120. package/lib/esm/widget/components/Mapping.scss +22 -8
  121. package/lib/esm/widget/components/MappingAction.js +3 -3
  122. package/lib/esm/widget/components/MappingAction.js.map +1 -1
  123. package/lib/esm/widget/components/MappingAction.scss +2 -2
  124. package/lib/esm/widget/components/MappingImportWizardModal.js +2 -2
  125. package/lib/esm/widget/components/MappingImportWizardModal.js.map +1 -1
  126. package/lib/esm/widget/components/MappingImportWizardModal.scss +3 -3
  127. package/lib/esm/widget/components/PropertyMenu.js +9 -9
  128. package/lib/esm/widget/components/PropertyMenu.js.map +1 -1
  129. package/lib/esm/widget/components/PropertyMenu.scss +7 -7
  130. package/lib/esm/widget/components/SelectIModel.js +3 -3
  131. package/lib/esm/widget/components/SelectIModel.js.map +1 -1
  132. package/lib/esm/widget/components/SelectIModel.scss +2 -6
  133. package/lib/esm/widget/components/SelectMapping.scss +2 -2
  134. package/lib/esm/widget/components/SelectMappings.js +3 -3
  135. package/lib/esm/widget/components/SelectMappings.js.map +1 -1
  136. package/lib/esm/widget/components/SelectProject.js +30 -22
  137. package/lib/esm/widget/components/SelectProject.js.map +1 -1
  138. package/lib/esm/widget/components/SelectProject.scss +5 -5
  139. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.d.ts +0 -1
  140. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.js +0 -1
  141. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.js.map +1 -1
  142. package/lib/esm/widget/components/property-grid/PropertyGrid.js +6 -6
  143. package/lib/esm/widget/components/property-grid/PropertyGrid.js.map +1 -1
  144. package/lib/esm/widget/components/property-grid/PropertyGrid.scss +12 -12
  145. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js +1 -1
  146. package/lib/esm/widget/components/property-grid/PropertyGridWrapper.js.map +1 -1
  147. package/lib/esm/widget/components/property-grid/PropertyList.js +1 -1
  148. package/lib/esm/widget/components/property-grid/PropertyList.js.map +1 -1
  149. package/lib/esm/widget/components/property-grid/PropertyView.js +5 -5
  150. package/lib/esm/widget/components/property-grid/PropertyView.js.map +1 -1
  151. package/lib/esm/widget/components/property-grid/PropertyView.scss +13 -62
  152. package/lib/esm/widget/components/utils.js +6 -6
  153. package/lib/esm/widget/components/utils.js.map +1 -1
  154. package/lib/esm/widget/components/utils.scss +6 -6
  155. package/package.json +1 -1
  156. package/lib/cjs/widget/components/GroupTile.d.ts +0 -13
  157. package/lib/cjs/widget/components/GroupTile.js +0 -18
  158. package/lib/cjs/widget/components/GroupTile.js.map +0 -1
  159. package/lib/cjs/widget/components/property-grid/NonPrimitivePropertyRenderer.scss +0 -16
  160. package/lib/esm/widget/components/GroupTile.d.ts +0 -13
  161. package/lib/esm/widget/components/GroupTile.js +0 -11
  162. package/lib/esm/widget/components/GroupTile.js.map +0 -1
  163. package/lib/esm/widget/components/property-grid/NonPrimitivePropertyRenderer.scss +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"GroupingMapping.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupingMapping.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAkB3F,MAAM,iCAAiC,GAAG,CAAC,KAAK,IAAI,EAAE,eAAC,OAAA,CAAC,MAAA,MAAM,CAAA,MAAA,SAAS,CAAC,mBAAmB,0CAAE,cAAc,EAAE,CAAA,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAEtH,MAAM,eAAe,GAAG,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAwB,EAAE,EAAE;IACnF,MAAM,UAAU,GAAkC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,MAAM,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAiB,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA2B;QACnE,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,iCAAiC;QACnE,MAAM;KACP,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,iCAAiC,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,oBAAC,+BAA+B,CAAC,QAAQ,IACvC,KAAK,EAAE,SAAS;QAEhB,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;YACjD,6BAAK,SAAS,EAAC,yBAAyB;gBACtC,oBAAC,QAAQ,OAAG,CACR,CACwB,CACS,CAC5C,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,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, useState } from \"react\";\nimport { Mappings } from \"./Mapping\";\nimport \"./GroupingMapping.scss\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { ClientPrefix, GetAccessTokenFn, GroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { GroupingMappingApiConfigContext } from \"./context/GroupingApiConfigContext\";\nimport { createMappingClient, MappingClientContext } from \"./context/MappingClientContext\";\n\nexport interface GroupingMappingProps {\n /**\n * Custom callback to retrieve access token.\n */\n getAccessToken?: GetAccessTokenFn;\n /**\n * Used for iTwin and iModel APIs.\n * Also used for Mapping API if a custom {@link client} is not provided.\n */\n prefix?: ClientPrefix;\n /**\n * A custom implementation of MappingClient.\n */\n client?: IMappingClient;\n}\n\nconst authorizationClientGetAccessToken = (async () => (await IModelApp.authorizationClient?.getAccessToken() ?? \"\"));\n\nconst GroupingMapping = ({ getAccessToken, prefix, client }: GroupingMappingProps) => {\n const clientProp: IMappingClient | ClientPrefix = client ?? prefix;\n const [mappingClient, setMappingClient] = useState<IMappingClient>(createMappingClient(clientProp));\n const [apiConfig, setApiConfig] = useState<GroupingMappingApiConfig>({\n getAccessToken: getAccessToken ?? authorizationClientGetAccessToken,\n prefix,\n });\n\n useEffect(() => {\n setApiConfig(() => ({ prefix, getAccessToken: getAccessToken ?? authorizationClientGetAccessToken }));\n }, [getAccessToken, prefix]);\n\n useEffect(() => {\n setMappingClient(createMappingClient(clientProp));\n }, [clientProp]);\n\n return (\n <GroupingMappingApiConfigContext.Provider\n value={apiConfig}\n >\n <MappingClientContext.Provider value={mappingClient}>\n <div className='group-mapping-container'>\n <Mappings />\n </div>\n </MappingClientContext.Provider>\n </GroupingMappingApiConfigContext.Provider>\n );\n};\n\nexport default GroupingMapping;\n"]}
1
+ {"version":3,"file":"GroupingMapping.js","sourceRoot":"","sources":["../../../../src/widget/components/GroupingMapping.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,OAAO,EAAE,+BAA+B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAkB3F,MAAM,iCAAiC,GAAG,CAAC,KAAK,IAAI,EAAE,eAAC,OAAA,CAAC,MAAA,MAAM,CAAA,MAAA,SAAS,CAAC,mBAAmB,0CAAE,cAAc,EAAE,CAAA,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC,CAAC;AAEtH,MAAM,eAAe,GAAG,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAwB,EAAE,EAAE;IACnF,MAAM,UAAU,GAAkC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,MAAM,CAAC;IACnE,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAiB,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpG,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA2B;QACnE,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,iCAAiC;QACnE,MAAM;KACP,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,iCAAiC,EAAE,CAAC,CAAC,CAAC;IACxG,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,oBAAC,+BAA+B,CAAC,QAAQ,IACvC,KAAK,EAAE,SAAS;QAEhB,oBAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE,aAAa;YACjD,6BAAK,SAAS,EAAC,6BAA6B;gBAC1C,oBAAC,QAAQ,OAAG,CACR,CACwB,CACS,CAC5C,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,eAAe,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, useState } from \"react\";\nimport { Mappings } from \"./Mapping\";\nimport \"./GroupingMapping.scss\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { ClientPrefix, GetAccessTokenFn, GroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\nimport { GroupingMappingApiConfigContext } from \"./context/GroupingApiConfigContext\";\nimport { createMappingClient, MappingClientContext } from \"./context/MappingClientContext\";\n\nexport interface GroupingMappingProps {\n /**\n * Custom callback to retrieve access token.\n */\n getAccessToken?: GetAccessTokenFn;\n /**\n * Used for iTwin and iModel APIs.\n * Also used for Mapping API if a custom {@link client} is not provided.\n */\n prefix?: ClientPrefix;\n /**\n * A custom implementation of MappingClient.\n */\n client?: IMappingClient;\n}\n\nconst authorizationClientGetAccessToken = (async () => (await IModelApp.authorizationClient?.getAccessToken() ?? \"\"));\n\nconst GroupingMapping = ({ getAccessToken, prefix, client }: GroupingMappingProps) => {\n const clientProp: IMappingClient | ClientPrefix = client ?? prefix;\n const [mappingClient, setMappingClient] = useState<IMappingClient>(createMappingClient(clientProp));\n const [apiConfig, setApiConfig] = useState<GroupingMappingApiConfig>({\n getAccessToken: getAccessToken ?? authorizationClientGetAccessToken,\n prefix,\n });\n\n useEffect(() => {\n setApiConfig(() => ({ prefix, getAccessToken: getAccessToken ?? authorizationClientGetAccessToken }));\n }, [getAccessToken, prefix]);\n\n useEffect(() => {\n setMappingClient(createMappingClient(clientProp));\n }, [clientProp]);\n\n return (\n <GroupingMappingApiConfigContext.Provider\n value={apiConfig}\n >\n <MappingClientContext.Provider value={mappingClient}>\n <div className='gmw-group-mapping-container'>\n <Mappings />\n </div>\n </MappingClientContext.Provider>\n </GroupingMappingApiConfigContext.Provider>\n );\n};\n\nexport default GroupingMapping;\n"]}
@@ -2,15 +2,9 @@
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';
5
+ @import "~@itwin/itwinui-css/scss/variables";
6
6
 
7
- // Widgets by default don't get horizontal scrollbars...
8
- /* stylelint-disable-next-line selector-class-pattern */
9
- .nz-widget-contentRenderer {
10
- width: 100%;
11
- }
12
-
13
- .group-mapping-container {
7
+ .gmw-group-mapping-container {
14
8
  display: flex;
15
9
  flex-direction: column;
16
10
  padding: $iui-baseline $iui-m;
@@ -19,6 +13,6 @@
19
13
  overflow: auto;
20
14
  }
21
15
 
22
- .field-legend {
16
+ .gmw-field-legend {
23
17
  color: $iui-color-system-gray;
24
- }
18
+ }
@@ -0,0 +1,13 @@
1
+ import type { ReactNode } from "react";
2
+ import "./HorizontalTile.scss";
3
+ interface HorizontalTileProps {
4
+ title: string;
5
+ actionGroup: ReactNode;
6
+ subText?: string;
7
+ onClickTitle?: () => void;
8
+ titleTooltip?: string;
9
+ subtextToolTip?: string;
10
+ }
11
+ export declare const HorizontalTile: ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup }: HorizontalTileProps) => JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=HorizontalTile.d.ts.map
@@ -0,0 +1,11 @@
1
+ import React from "react";
2
+ import { Text } from "@itwin/itwinui-react";
3
+ import "./HorizontalTile.scss";
4
+ export const HorizontalTile = ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup }) => {
5
+ return (React.createElement("div", { className: "gmw-horizontal-tile-container", "data-testid": "gmw-horizontal-tile" },
6
+ React.createElement("div", { className: "gmw-body" },
7
+ React.createElement(Text, { className: `gmw-body-text ${onClickTitle ? "iui-anchor" : ""}`, onClick: onClickTitle, variant: "body", title: titleTooltip }, title),
8
+ subText && React.createElement(Text, { className: "gmw-body-text", isMuted: true, title: subtextToolTip, variant: "small" }, subText)),
9
+ React.createElement("div", { className: "gmw-action-button", "data-testid": "tile-action-button" }, actionGroup)));
10
+ };
11
+ //# sourceMappingURL=HorizontalTile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalTile.js","sourceRoot":"","sources":["../../../../src/widget/components/HorizontalTile.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,uBAAuB,CAAC;AAW/B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAsB,EAAE,EAAE;IAEhI,OAAO,CACL,6BAAK,SAAS,EAAC,+BAA+B,iBAAa,qBAAqB;QAC9E,6BAAK,SAAS,EAAC,UAAU;YACvB,oBAAC,IAAI,IAAC,SAAS,EAAE,iBAAiB,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,YAAY,IAAG,KAAK,CAAQ;YAC9I,OAAO,IAAI,oBAAC,IAAI,IAAC,SAAS,EAAC,eAAe,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAC,OAAO,IAAE,OAAO,CAAQ,CAC9G;QACN,6BAAK,SAAS,EAAC,mBAAmB,iBAAa,oBAAoB,IAChE,WAAW,CACR,CACF,CACP,CAAC;AAEJ,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 type { ReactNode } from \"react\";\nimport React from \"react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport \"./HorizontalTile.scss\";\n\ninterface HorizontalTileProps {\n title: string;\n actionGroup: ReactNode;\n subText?: string;\n onClickTitle?: () => void;\n titleTooltip?: string;\n subtextToolTip?: string;\n}\n\nexport const HorizontalTile = ({ title, subText, onClickTitle, titleTooltip, subtextToolTip, actionGroup}: HorizontalTileProps) => {\n\n return (\n <div className=\"gmw-horizontal-tile-container\" data-testid=\"gmw-horizontal-tile\">\n <div className=\"gmw-body\">\n <Text className={`gmw-body-text ${onClickTitle ? \"iui-anchor\" : \"\"}`} onClick={onClickTitle} variant=\"body\" title={titleTooltip}>{title}</Text>\n {subText && <Text className=\"gmw-body-text\" isMuted={true} title={subtextToolTip} variant=\"small\">{subText}</Text>}\n </div>\n <div className=\"gmw-action-button\" data-testid=\"tile-action-button\">\n {actionGroup}\n </div>\n </div>\n );\n\n};\n"]}
@@ -4,14 +4,14 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import '~@itwin/itwinui-css/scss/variables';
6
6
 
7
- .gmw-group-tile-container {
7
+ .gmw-horizontal-tile-container {
8
8
  display: flex;
9
9
  justify-content: space-between;
10
10
  border-radius: 5px;
11
11
  background-color: var(--iui-color-background-2);
12
12
  height: $iui-baseline * 4;
13
- padding: 5.5px 8px;
14
- .body {
13
+ padding: 5.5px $iui-s;
14
+ .gmw-body {
15
15
  display: flex;
16
16
  flex-direction: column;
17
17
  min-width: 0;
@@ -22,7 +22,7 @@
22
22
  text-overflow: ellipsis;
23
23
  }
24
24
  }
25
- .action-button {
25
+ .gmw-action-button {
26
26
  margin-left: 0;
27
27
  align-self: center;
28
28
  min-width: 36px;
@@ -5,9 +5,9 @@
5
5
  import { Presentation } from "@itwin/presentation-frontend";
6
6
  import { useActiveIModelConnection } from "@itwin/appui-react";
7
7
  import { SvgAdd, SvgDelete, SvgEdit, SvgImport, SvgMore, SvgProcess, } from "@itwin/itwinui-icons-react";
8
- import { Button, ButtonGroup, DropdownMenu, IconButton, MenuItem, Table, } from "@itwin/itwinui-react";
9
- import React, { useCallback, useEffect, useMemo, useState } from "react";
10
- import { handleError, onSelectionChanged, WidgetHeader } from "./utils";
8
+ import { Button, DropdownMenu, IconButton, MenuItem, Surface, } from "@itwin/itwinui-react";
9
+ import React, { useCallback, useEffect, useState } from "react";
10
+ import { EmptyMessage, handleError, LoadingOverlay, onSelectionChanged, WidgetHeader } from "./utils";
11
11
  import "./Mapping.scss";
12
12
  import DeleteModal from "./DeleteModal";
13
13
  import { Groupings } from "./Grouping";
@@ -15,6 +15,7 @@ import MappingAction from "./MappingAction";
15
15
  import { MappingImportWizardModal } from "./MappingImportWizardModal";
16
16
  import { useMappingClient } from "./context/MappingClientContext";
17
17
  import { BlockingOverlay } from "./BlockingOverlay";
18
+ import { HorizontalTile } from "./HorizontalTile";
18
19
  import { clearAll } from "./viewerUtils";
19
20
  import { useGroupingMappingApiConfig } from "./context/GroupingApiConfigContext";
20
21
  var MappingView;
@@ -81,58 +82,6 @@ export const Mappings = () => {
81
82
  const addMapping = async () => {
82
83
  setMappingView(MappingView.ADDING);
83
84
  };
84
- const mappingsColumns = useMemo(() => [
85
- {
86
- Header: "Table",
87
- columns: [
88
- {
89
- id: "mappingName",
90
- Header: "Mapping Name",
91
- accessor: "mappingName",
92
- Cell: (value) => (React.createElement("div", { className: "iui-anchor", onClick: () => {
93
- setSelectedMapping(value.row.original);
94
- setMappingView(MappingView.GROUPS);
95
- } }, value.row.original.mappingName)),
96
- },
97
- {
98
- id: "description",
99
- Header: "Description",
100
- accessor: "description",
101
- },
102
- {
103
- id: "dropdown",
104
- Header: "",
105
- width: 80,
106
- Cell: (value) => {
107
- return (React.createElement(DropdownMenu, { menuItems: (close) => [
108
- React.createElement(MenuItem, { key: 0, onClick: () => {
109
- setSelectedMapping(value.row.original);
110
- setMappingView(MappingView.MODIFYING);
111
- }, icon: React.createElement(SvgEdit, null) }, "Modify"),
112
- React.createElement(MenuItem, { key: 1, onClick: async () => {
113
- setSelectedMapping(value.row.original);
114
- setShowBlockingOverlay(true);
115
- close();
116
- await toggleExtraction(getAccessToken, mappingClient, iModelId, value.row.original);
117
- await refresh();
118
- setShowBlockingOverlay(false);
119
- }, icon: React.createElement(SvgProcess, null) }, value.row.original.extractionEnabled ? "Disable extraction" : "Enable extraction"),
120
- React.createElement(MenuItem, { key: 2, onClick: () => {
121
- setSelectedMapping(value.row.original);
122
- setShowDeleteModal(true);
123
- close();
124
- }, icon: React.createElement(SvgDelete, null) }, "Remove"),
125
- ] },
126
- React.createElement(IconButton, { styleType: "borderless" },
127
- React.createElement(SvgMore, { style: {
128
- width: "16px",
129
- height: "16px",
130
- } }))));
131
- },
132
- },
133
- ],
134
- },
135
- ], [getAccessToken, mappingClient, iModelId, refresh]);
136
85
  switch (mappingView) {
137
86
  case MappingView.ADDING:
138
87
  return React.createElement(MappingAction, { iModelId: iModelId, returnFn: refresh });
@@ -144,13 +93,44 @@ export const Mappings = () => {
144
93
  return (React.createElement(React.Fragment, null,
145
94
  React.createElement(BlockingOverlay, { isVisible: showBlockingOverlay }),
146
95
  React.createElement(WidgetHeader, { title: "Mappings" }),
147
- React.createElement("div", { className: "mappings-container" },
148
- React.createElement("div", { className: "table-toolbar" },
149
- React.createElement(Button, { startIcon: React.createElement(SvgAdd, null), onClick: async () => addMapping(), styleType: "high-visibility" }, "New"),
150
- React.createElement(ButtonGroup, { onClick: () => setShowImportModal(true) },
151
- React.createElement(IconButton, { title: "Import Mappings" },
96
+ React.createElement(Surface, { className: "gmw-mappings-container" },
97
+ React.createElement("div", { className: "gmw-table-toolbar" },
98
+ React.createElement("div", { className: "gmw-button-spacing" },
99
+ React.createElement(Button, { startIcon: React.createElement(SvgAdd, null), onClick: async () => addMapping(), styleType: "high-visibility" }, "New"),
100
+ React.createElement(IconButton, { title: "Import Mappings", onClick: () => setShowImportModal(true) },
152
101
  React.createElement(SvgImport, null)))),
153
- React.createElement(Table, { data: mappings, density: "extra-condensed", columns: mappingsColumns, emptyTableContent: "No Mappings available.", isSortable: true, isLoading: isLoading })),
102
+ isLoading ? (React.createElement(LoadingOverlay, null)) : mappings.length === 0 ? (React.createElement(EmptyMessage, { message: "No Mappings available." })) : (React.createElement("div", { className: "gmw-mappings-list" }, mappings
103
+ .sort((a, b) => { var _a, _b, _c; return (_c = (_a = a.mappingName) === null || _a === void 0 ? void 0 : _a.localeCompare((_b = b.mappingName) !== null && _b !== void 0 ? _b : "")) !== null && _c !== void 0 ? _c : 1; })
104
+ .map((mapping) => {
105
+ var _a, _b;
106
+ return (React.createElement(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: () => {
107
+ setSelectedMapping(mapping);
108
+ setMappingView(MappingView.GROUPS);
109
+ }, actionGroup: React.createElement(DropdownMenu, { menuItems: (close) => [
110
+ React.createElement(MenuItem, { key: 0, onClick: () => {
111
+ setSelectedMapping(mapping);
112
+ setMappingView(MappingView.MODIFYING);
113
+ }, icon: React.createElement(SvgEdit, null) }, "Modify"),
114
+ React.createElement(MenuItem, { key: 1, onClick: async () => {
115
+ setSelectedMapping(mapping);
116
+ setShowBlockingOverlay(true);
117
+ close();
118
+ await toggleExtraction(getAccessToken, mappingClient, iModelId, mapping);
119
+ await refresh();
120
+ setShowBlockingOverlay(false);
121
+ }, icon: React.createElement(SvgProcess, null) }, mapping.extractionEnabled ? "Disable extraction" : "Enable extraction"),
122
+ React.createElement(MenuItem, { key: 2, onClick: () => {
123
+ setSelectedMapping(mapping);
124
+ setShowDeleteModal(true);
125
+ close();
126
+ }, icon: React.createElement(SvgDelete, null) }, "Remove"),
127
+ ] },
128
+ React.createElement(IconButton, { styleType: "borderless" },
129
+ React.createElement(SvgMore, { style: {
130
+ width: "16px",
131
+ height: "16px",
132
+ } }))) }));
133
+ })))),
154
134
  React.createElement(DeleteModal, { entityName: (_b = selectedMapping === null || selectedMapping === void 0 ? void 0 : selectedMapping.mappingName) !== null && _b !== void 0 ? _b : "", show: showDeleteModal, setShow: setShowDeleteModal, onDelete: async () => {
155
135
  var _a;
156
136
  const accessToken = await getAccessToken();
@@ -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 ButtonGroup,\n DropdownMenu,\n IconButton,\n MenuItem,\n Table,\n} from \"@itwin/itwinui-react\";\nimport type { CellProps } from \"react-table\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { CreateTypeFromInterface } from \"../utils\";\nimport { handleError, 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 { Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { clearAll } from \"./viewerUtils\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type MappingType = 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 mappingClient: IMappingClient,\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingClient.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 mappingClient: IMappingClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingClient.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 const mappingsColumns = useMemo(\n () => [\n {\n Header: \"Table\",\n columns: [\n {\n id: \"mappingName\",\n Header: \"Mapping Name\",\n accessor: \"mappingName\",\n Cell: (value: CellProps<{ mappingName: string }>) => (\n <div\n className=\"iui-anchor\"\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.GROUPS);\n }}\n >\n {value.row.original.mappingName}\n </div>\n ),\n },\n {\n id: \"description\",\n Header: \"Description\",\n accessor: \"description\",\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<MappingType>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) => [\n <MenuItem\n key={0}\n onClick={() => {\n setSelectedMapping(value.row.original);\n setMappingView(MappingView.MODIFYING);\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n\n <MenuItem\n key={1}\n onClick={async () => {\n setSelectedMapping(value.row.original);\n setShowBlockingOverlay(true);\n close();\n await toggleExtraction(getAccessToken, mappingClient, iModelId, value.row.original);\n await refresh();\n setShowBlockingOverlay(false);\n }}\n icon={<SvgProcess />}\n >\n {value.row.original.extractionEnabled ? \"Disable extraction\" : \"Enable extraction\"}\n </MenuItem>,\n\n <MenuItem\n key={2}\n onClick={() => {\n setSelectedMapping(value.row.original);\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 ],\n },\n ],\n [getAccessToken, mappingClient, iModelId, refresh]\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 <div className=\"mappings-container\">\n <div className=\"table-toolbar\">\n <Button\n startIcon={<SvgAdd />}\n onClick={async () => addMapping()}\n styleType=\"high-visibility\"\n >\n New\n </Button>\n <ButtonGroup onClick={() => setShowImportModal(true)}>\n <IconButton title=\"Import Mappings\">\n <SvgImport />\n </IconButton>\n </ButtonGroup>\n </div>\n <Table<MappingType>\n data={mappings}\n density=\"extra-condensed\"\n columns={mappingsColumns}\n emptyTableContent=\"No Mappings available.\"\n isSortable\n isLoading={isLoading}\n />\n </div>\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 { 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 { Mapping } from \"@itwin/insights-client\";\nimport { BlockingOverlay } from \"./BlockingOverlay\";\nimport { HorizontalTile } from \"./HorizontalTile\";\nimport { clearAll } from \"./viewerUtils\";\nimport type { IMappingClient } from \"../IMappingClient\";\nimport type { GetAccessTokenFn } from \"./context/GroupingApiConfigContext\";\nimport { useGroupingMappingApiConfig } from \"./context/GroupingApiConfigContext\";\n\nexport type MappingType = 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 mappingClient: IMappingClient,\n) => {\n try {\n setIsLoading(true);\n const accessToken = await getAccessToken();\n const mappings = await mappingClient.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 mappingClient: IMappingClient,\n iModelId: string,\n mapping: Mapping\n) => {\n try {\n const newState = !mapping?.extractionEnabled;\n const accessToken = await getAccessToken();\n await mappingClient.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"]}
@@ -4,23 +4,37 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import '~@itwin/itwinui-css/scss/variables';
6
6
 
7
- .mappings-container {
7
+ .gmw-mappings-container {
8
8
  display: flex;
9
9
  flex-direction: column;
10
- gap: $iui-baseline;
10
+ flex-grow: 1;
11
+ padding: $iui-baseline $iui-m;
12
+ min-height: 0;;
11
13
 
12
- .table-toolbar {
14
+ .gmw-table-toolbar {
13
15
  display: flex;
16
+ justify-content: space-between;
14
17
  gap: $iui-s;
18
+ border-bottom: 1px solid var(--iui-color-background-4);
19
+ padding-bottom: $iui-baseline;
20
+ flex-wrap: wrap;
21
+
22
+ .gmw-button-spacing {
23
+ display: flex;
24
+ gap: $iui-s;
25
+ }
15
26
  }
16
27
 
17
28
  button {
18
29
  align-self: flex-start;
19
30
  }
20
- }
21
31
 
22
- .action-panel {
23
- display: flex;
24
- justify-content: right;
25
- column-gap: $iui-s;
32
+ .gmw-mappings-list {
33
+ display: flex;
34
+ flex-direction: column;
35
+ overflow-y: overlay;
36
+ gap: 7.5px;
37
+ margin-top: 7.5px;
38
+ }
26
39
  }
40
+
@@ -51,9 +51,9 @@ const MappingAction = ({ iModelId, mapping, returnFn }) => {
51
51
  };
52
52
  return (React.createElement(React.Fragment, null,
53
53
  React.createElement(WidgetHeader, { title: mapping ? "Modify Mapping" : "Add Mapping", returnFn: returnFn }),
54
- React.createElement("div", { className: 'details-form-container' },
55
- React.createElement(Fieldset, { legend: 'Mapping Details', className: 'details-form' },
56
- React.createElement(Small, { className: 'field-legend' }, "Asterisk * indicates mandatory fields."),
54
+ React.createElement("div", { className: 'gmw-details-form-container' },
55
+ React.createElement(Fieldset, { legend: 'Mapping Details', className: 'gmw-details-form' },
56
+ React.createElement(Small, { className: 'gmw-field-legend' }, "Asterisk * indicates mandatory fields."),
57
57
  React.createElement(LabeledInput, { id: 'name', name: 'name', label: 'Name', value: values.name, required: true, onChange: (event) => {
58
58
  handleInputChange(event, values, setValues);
59
59
  validator.showMessageFor("name");
@@ -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='details-form-container'>\n <Fieldset legend='Mapping Details' className='details-form'>\n <Small className='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, 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"]}
@@ -4,11 +4,11 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import '~@itwin/itwinui-css/scss/variables';
6
6
 
7
- .details-form-container {
7
+ .gmw-details-form-container {
8
8
  overflow-x: auto;
9
9
  height: 100%;
10
10
 
11
- .details-form {
11
+ .gmw-details-form {
12
12
  display: flex;
13
13
  flex-direction: column;
14
14
  gap: $iui-baseline;
@@ -41,7 +41,7 @@ export const MappingImportWizardModal = ({ show, setShow, onFinish, }) => {
41
41
  return (React.createElement(Modal, { title: 'Import Mappings', modalRootId: 'grouping-mapping-widget', isOpen: show, closeOnEsc: false, closeOnExternalClick: false, isDismissible: !importing, styleType: 'fullPage', onClose: async () => {
42
42
  await onClose();
43
43
  } },
44
- React.createElement("div", { className: 'import-wizard-body-container' },
44
+ React.createElement("div", { className: 'gmw-import-wizard-body-container' },
45
45
  React.createElement(Wizard, { currentStep: currentStep, steps: steps.current, onStepClick: importing ? undefined : (index) => setCurrentStep(index) }),
46
46
  (() => {
47
47
  switch (currentStep) {
@@ -59,7 +59,7 @@ export const MappingImportWizardModal = ({ show, setShow, onFinish, }) => {
59
59
  case 3:
60
60
  // Preserve table state within Select Mappings
61
61
  return (React.createElement(React.Fragment, null,
62
- React.createElement("div", { style: { display: currentStep === 2 ? "flex" : "none" }, className: "mappings-container" },
62
+ React.createElement("div", { style: { display: currentStep === 2 ? "flex" : "none" }, className: "gmw-mappings-container" },
63
63
  React.createElement(SelectMappings, { iModelId: selectedIModelId, onSelect: (selectedMappings) => {
64
64
  setSelectedMappings(selectedMappings);
65
65
  setCurrentStep(3);
@@ -1 +1 @@
1
- {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingImportWizardModal.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F,OAAO,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEhD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,iCAAiC,CAAC;AACzC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAQ3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,EACvC,IAAI,EACJ,OAAO,EACP,QAAQ,GACsB,EAAE,EAAE;IAClC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAC5E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAE3D,MAAM,KAAK,GAAG,MAAM,CAAmB;QACrC;YACE,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EAAE,wDAAwD;SACtE;QACD;YACE,IAAI,EAAE,eAAe;YACrB,WAAW,EAAE,wDAAwD;SACtE;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,wCAAwC;SACtD;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EACT,iEAAiE;SACpE;KACF,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,cAAc,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,QAAQ,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,KAAK,IACJ,KAAK,EAAC,iBAAiB,EACvB,WAAW,EAAC,yBAAyB,EACrC,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,KAAK,EACjB,oBAAoB,EAAE,KAAK,EAC3B,aAAa,EAAE,CAAC,SAAS,EACzB,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAED,6BAAK,SAAS,EAAC,8BAA8B;YAC3C,oBAAC,MAAM,IACL,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,WAAW,EACT,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,GAElE;YAED,CAAC,GAAG,EAAE;gBACL,QAAQ,WAAW,EAAE;oBACnB,KAAK,CAAC;wBACJ,OAAO,CACL,oBAAC,aAAa,IACZ,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;gCACpB,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gCACjC,cAAc,CAAC,CAAC,CAAC,CAAC;4BACpB,CAAC,EACD,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC;oBACJ,KAAK,CAAC;wBACJ,OAAO,CACL,oBAAC,YAAY,IACX,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;gCACnB,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gCAC/B,cAAc,CAAC,CAAC,CAAC,CAAC;4BACpB,CAAC,EACD,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,EAC7C,QAAQ,EAAE,OAAO,GACjB,CACH,CAAC;oBACJ,KAAK,CAAC,CAAC;oBACP,KAAK,CAAC;wBACJ,8CAA8C;wBAC9C,OAAO,CACL;4BACE,6BACE,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EACvD,SAAS,EAAC,oBAAoB;gCAE9B,oBAAC,cAAc,IACb,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;wCAC7B,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;wCACtC,cAAc,CAAC,CAAC,CAAC,CAAC;oCACpB,CAAC,EACD,QAAQ,EAAE,OAAO,EACjB,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,GAC7C,CACE;4BACL,WAAW,KAAK,CAAC,IAAI,CACpB,oBAAC,oBAAoB,IACnB,cAAc,EAAE,gBAAgB,EAChC,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,CAAC,EAC7C,QAAQ,EAAE,OAAO,EACjB,QAAQ,EAAE,KAAK,IAAI,EAAE;oCACnB,MAAM,OAAO,EAAE,CAAC;oCAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gCACtB,CAAC,GACD,CACH,CACA,CACJ,CAAC;oBACJ;wBACE,OAAO,IAAI,CAAC;iBACf;YACH,CAAC,CAAC,EAAE,CACA,CACA,CACT,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\nimport React, { useRef, useState } from \"react\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Modal, Wizard } from \"@itwin/itwinui-react\";\nimport SelectProject from \"./SelectProject\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectMappings from \"./SelectMappings\";\nimport type { MappingType } from \"./Mapping\";\nimport ConfirmMappingImport from \"./ConfirmMappingsImport\";\n\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: React.Dispatch<React.SetStateAction<boolean>>;\n onFinish: () => Promise<void>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n}: MappingImportWizardModalProps) => {\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [selectedProjectId, setSelectedProjectId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<MappingType[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select source project\",\n description: \"Select the source project to bring your mappings from.\",\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the project you have selected.\",\n },\n {\n name: \"Select Mapping\",\n description: \"Select one or more mappings to import.\",\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title='Import Mappings'\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='import-wizard-body-container'>\n <Wizard\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <SelectProject\n onSelect={(project) => {\n setSelectedProjectId(project.id);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n />\n );\n case 1:\n return (\n <SelectIModel\n projectId={selectedProjectId}\n onSelect={(iModel) => {\n setSelectedIModelId(iModel.id);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"mappings-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={async () => {\n await onClose();\n setImporting(false);\n }}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
1
+ {"version":3,"file":"MappingImportWizardModal.js","sourceRoot":"","sources":["../../../../src/widget/components/MappingImportWizardModal.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, { useRef, useState } from \"react\";\nimport type { StepProperties } from \"@itwin/itwinui-react\";\nimport { Modal, Wizard } from \"@itwin/itwinui-react\";\nimport SelectProject from \"./SelectProject\";\nimport \"./MappingImportWizardModal.scss\";\nimport SelectIModel from \"./SelectIModel\";\nimport SelectMappings from \"./SelectMappings\";\nimport type { MappingType } from \"./Mapping\";\nimport ConfirmMappingImport from \"./ConfirmMappingsImport\";\n\ninterface MappingImportWizardModalProps {\n show: boolean;\n setShow: React.Dispatch<React.SetStateAction<boolean>>;\n onFinish: () => Promise<void>;\n}\n\nexport const MappingImportWizardModal = ({\n show,\n setShow,\n onFinish,\n}: MappingImportWizardModalProps) => {\n const [currentStep, setCurrentStep] = useState<number>(0);\n const [selectedProjectId, setSelectedProjectId] = useState<string>(\"\");\n const [selectedIModelId, setSelectedIModelId] = useState<string>(\"\");\n const [selectedMappings, setSelectedMappings] = useState<MappingType[]>([]);\n const [importing, setImporting] = useState<boolean>(false);\n\n const steps = useRef<StepProperties[]>([\n {\n name: \"Select source project\",\n description: \"Select the source project to bring your mappings from.\",\n },\n {\n name: \"Select iModel\",\n description: \"Select an iModel within the project you have selected.\",\n },\n {\n name: \"Select Mapping\",\n description: \"Select one or more mappings to import.\",\n },\n {\n name: \"Rename & Confirm\",\n description:\n \"Rename and confirm your selections. Click import when finished.\",\n },\n ]);\n\n const onClose = async () => {\n setShow(false);\n setCurrentStep(0);\n await onFinish();\n };\n\n return (\n <Modal\n title='Import Mappings'\n modalRootId='grouping-mapping-widget'\n isOpen={show}\n closeOnEsc={false}\n closeOnExternalClick={false}\n isDismissible={!importing}\n styleType='fullPage'\n onClose={async () => {\n await onClose();\n }}\n >\n <div className='gmw-import-wizard-body-container'>\n <Wizard\n currentStep={currentStep}\n steps={steps.current}\n onStepClick={\n importing ? undefined : (index: number) => setCurrentStep(index)\n }\n />\n\n {(() => {\n switch (currentStep) {\n case 0:\n return (\n <SelectProject\n onSelect={(project) => {\n setSelectedProjectId(project.id);\n setCurrentStep(1);\n }}\n onCancel={onClose}\n />\n );\n case 1:\n return (\n <SelectIModel\n projectId={selectedProjectId}\n onSelect={(iModel) => {\n setSelectedIModelId(iModel.id);\n setCurrentStep(2);\n }}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n />\n );\n case 2:\n case 3:\n // Preserve table state within Select Mappings\n return (\n <>\n <div\n style={{ display: currentStep === 2 ? \"flex\" : \"none\" }}\n className=\"gmw-mappings-container\"\n >\n <SelectMappings\n iModelId={selectedIModelId}\n onSelect={(selectedMappings) => {\n setSelectedMappings(selectedMappings);\n setCurrentStep(3);\n }}\n onCancel={onClose}\n backFn={() => setCurrentStep(currentStep - 1)}\n />\n </div>\n {currentStep === 3 && (\n <ConfirmMappingImport\n sourceiModelId={selectedIModelId}\n selectedMappings={selectedMappings}\n importing={importing}\n setImporting={setImporting}\n setSelectedMappings={setSelectedMappings}\n backFn={() => setCurrentStep(currentStep - 1)}\n onCancel={onClose}\n onFinish={async () => {\n await onClose();\n setImporting(false);\n }}\n />\n )}\n </>\n );\n default:\n return null;\n }\n })()}\n </div>\n </Modal>\n );\n};\n"]}
@@ -4,20 +4,20 @@
4
4
  *--------------------------------------------------------------------------------------------*/
5
5
  @import '~@itwin/itwinui-css/scss/variables';
6
6
 
7
- .import-wizard-body-container {
7
+ .gmw-import-wizard-body-container {
8
8
  display: flex;
9
9
  flex-direction: column;
10
10
  gap: $iui-baseline * 2;
11
11
  margin-top: $iui-baseline * 2;
12
12
  flex-grow: 1;
13
13
  min-height: 0;
14
- .mappings-container {
14
+ .gmw-mappings-container {
15
15
  flex-grow: 1;
16
16
  min-height: 0;
17
17
  }
18
18
  }
19
19
 
20
- .import-action-panel {
20
+ .gmw-import-action-panel {
21
21
  display: flex;
22
22
  justify-content: center;
23
23
  padding: $iui-baseline * 2 $iui-m $iui-baseline;
@@ -139,7 +139,7 @@ export const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProp
139
139
  modified && await refreshCustomCalculations();
140
140
  }, [refreshCustomCalculations]);
141
141
  if (isLoading) {
142
- return (React.createElement("div", { className: 'loading-overlay' },
142
+ return (React.createElement("div", { className: 'gmw-loading-overlay' },
143
143
  React.createElement(Text, null, "Loading Group"),
144
144
  React.createElement(ProgressRadial, { indeterminate: true }),
145
145
  React.createElement(Text, null, "Please wait...")));
@@ -158,23 +158,23 @@ export const PropertyMenu = ({ iModelId, mappingId, group, goBack, hideGroupProp
158
158
  case PropertyMenuView.MODIFY_CUSTOM_CALCULATION:
159
159
  return (React.createElement(CustomCalculationAction, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, properties: convertToPropertyMap(groupProperties, calculatedProperties, customCalculations, selectedCustomCalculation === null || selectedCustomCalculation === void 0 ? void 0 : selectedCustomCalculation.propertyName), customCalculation: selectedCustomCalculation, returnFn: customCalculationReturn }));
160
160
  default:
161
- return (React.createElement(InformationPanelWrapper, { className: 'property-menu-wrapper' },
162
- React.createElement("div", { className: 'property-header' },
161
+ return (React.createElement(InformationPanelWrapper, { className: 'gmw-property-menu-wrapper' },
162
+ React.createElement("div", { className: 'gmw-property-header' },
163
163
  React.createElement(WidgetHeader, { title: `${(_d = group.groupName) !== null && _d !== void 0 ? _d : ""}`, returnFn: goBack }),
164
164
  React.createElement(IconButton, { styleType: 'borderless', onClick: () => setIsInformationPanelOpen(true) },
165
165
  React.createElement(SvgProperties, null))),
166
- React.createElement("div", { className: 'property-menu-container' },
167
- !hideGroupProps && (React.createElement("div", { className: 'property-table' },
166
+ React.createElement("div", { className: 'gmw-property-menu-container' },
167
+ !hideGroupProps && (React.createElement("div", { className: 'gmw-property-table' },
168
168
  React.createElement(GroupPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onGroupPropertyModify: onGroupPropertyModify, setSelectedGroupProperty: setSelectedGroupProperty, setGroupModifyView: setPropertyMenuView, isLoadingGroupProperties: isLoadingGroupProperties, groupProperties: groupProperties, refreshGroupProperties: refreshGroupProperties, selectedGroupProperty: selectedGroupProperty }))),
169
- !hideCalculatedProps && (React.createElement("div", { className: 'property-table' },
169
+ !hideCalculatedProps && (React.createElement("div", { className: 'gmw-property-table' },
170
170
  React.createElement(CalculatedPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onCalculatedPropertyModify: onCalculatedPropertyModify, setSelectedCalculatedProperty: setSelectedCalculatedProperty, setGroupModifyView: setPropertyMenuView, isLoadingCalculatedProperties: isLoadingCalculatedProperties, calculatedProperties: calculatedProperties, refreshCalculatedProperties: refreshCalculatedProperties, selectedCalculatedProperty: selectedCalculatedProperty }))),
171
- !hideCustomCalculationProps && (React.createElement("div", { className: 'property-table' },
171
+ !hideCustomCalculationProps && (React.createElement("div", { className: 'gmw-property-table' },
172
172
  React.createElement(CustomCalculationTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onCustomCalculationModify: onCustomCalculationModify, setSelectedCustomCalculation: setSelectedCustomCalculation, setGroupModifyView: setPropertyMenuView, isLoadingCustomCalculations: isLoadingCustomCalculations, customCalculations: customCalculations, refreshCustomCalculations: refreshCustomCalculations, selectedCustomCalculation: selectedCustomCalculation })))),
173
- React.createElement(InformationPanel, { className: 'information-panel', isOpen: isInformationPanelOpen },
173
+ React.createElement(InformationPanel, { className: 'gmw-information-panel', isOpen: isInformationPanelOpen },
174
174
  React.createElement(InformationPanelHeader, { onClose: () => setIsInformationPanelOpen(false) },
175
175
  React.createElement(Text, { variant: 'subheading' }, `${(_e = group.groupName) !== null && _e !== void 0 ? _e : ""} Information`)),
176
176
  React.createElement(InformationPanelBody, null,
177
- React.createElement("div", { className: 'information-body' },
177
+ React.createElement("div", { className: 'gmw-information-body' },
178
178
  React.createElement(LabeledTextarea, { label: 'Query', rows: 15, readOnly: true, defaultValue: (_f = group.query) !== null && _f !== void 0 ? _f : "" }))))));
179
179
  }
180
180
  };