@itwin/grouping-mapping-widget 0.26.1 → 0.28.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 (173) hide show
  1. package/lib/cjs/WidgetShell/GroupingMapping.d.ts +3 -1
  2. package/lib/cjs/WidgetShell/GroupingMapping.js +1 -1
  3. package/lib/cjs/WidgetShell/GroupingMapping.js.map +1 -1
  4. package/lib/cjs/WidgetShell/GroupingMappingContent.d.ts +2 -1
  5. package/lib/cjs/WidgetShell/GroupingMappingContent.js +2 -2
  6. package/lib/cjs/WidgetShell/GroupingMappingContent.js.map +1 -1
  7. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.d.ts +2 -1
  8. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js +5 -19
  9. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  10. package/lib/cjs/components/Groups/Groups.d.ts +2 -1
  11. package/lib/cjs/components/Groups/Groups.js +2 -2
  12. package/lib/cjs/components/Groups/Groups.js.map +1 -1
  13. package/lib/cjs/components/Groups/GroupsView.d.ts +2 -1
  14. package/lib/cjs/components/Groups/GroupsView.js +5 -5
  15. package/lib/cjs/components/Groups/GroupsView.js.map +1 -1
  16. package/lib/cjs/components/Groups/GroupsVisualization.d.ts +3 -1
  17. package/lib/cjs/components/Groups/GroupsVisualization.js +8 -3
  18. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  19. package/lib/cjs/components/Groups/GroupsVisualizationActions.d.ts +2 -1
  20. package/lib/cjs/components/Groups/GroupsVisualizationActions.js +36 -9
  21. package/lib/cjs/components/Groups/GroupsVisualizationActions.js.map +1 -1
  22. package/lib/cjs/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  23. package/lib/cjs/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  24. package/lib/cjs/components/Mappings/MappingViewActionGroup.js +1 -2
  25. package/lib/cjs/components/Mappings/MappingViewActionGroup.js.map +1 -1
  26. package/lib/cjs/components/Mappings/Mappings.d.ts +1 -0
  27. package/lib/cjs/components/Mappings/Mappings.js.map +1 -1
  28. package/lib/cjs/components/Mappings/MappingsView.d.ts +2 -1
  29. package/lib/cjs/components/Mappings/MappingsView.js +4 -4
  30. package/lib/cjs/components/Mappings/MappingsView.js.map +1 -1
  31. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +2 -0
  32. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +2 -1
  33. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  34. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  35. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +21 -61
  36. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  37. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  38. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +3 -12
  39. package/lib/cjs/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  40. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  41. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js +17 -164
  42. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  43. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationAction.scss +4 -3
  44. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +76 -19
  45. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  46. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  47. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +2 -1
  48. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +12 -4
  49. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  50. package/lib/cjs/components/Properties/PropertyMenu.d.ts +2 -1
  51. package/lib/cjs/components/Properties/PropertyMenu.js +2 -7
  52. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  53. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.d.ts +1 -1
  54. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +2 -2
  55. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  56. package/lib/cjs/components/Properties/PropertyTable.d.ts +2 -1
  57. package/lib/cjs/components/Properties/PropertyTable.js +2 -2
  58. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  59. package/lib/cjs/components/Properties/PropertyTableToolbar.d.ts +2 -1
  60. package/lib/cjs/components/Properties/PropertyTableToolbar.js +3 -3
  61. package/lib/cjs/components/Properties/PropertyTableToolbar.js.map +1 -1
  62. package/lib/cjs/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  63. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js +55 -0
  64. package/lib/cjs/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  65. package/lib/cjs/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  66. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js +59 -13
  67. package/lib/cjs/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  68. package/lib/cjs/components/Properties/hooks/useForwardRef.d.ts +3 -0
  69. package/lib/cjs/components/Properties/hooks/useForwardRef.js +20 -0
  70. package/lib/cjs/components/Properties/hooks/useForwardRef.js.map +1 -0
  71. package/lib/cjs/components/SharedComponents/ActionPanel.d.ts +3 -1
  72. package/lib/cjs/components/SharedComponents/ActionPanel.js +3 -3
  73. package/lib/cjs/components/SharedComponents/ActionPanel.js.map +1 -1
  74. package/lib/cjs/formula/FormulaDataTypeResolver.d.ts +3 -2
  75. package/lib/cjs/formula/FormulaDataTypeResolver.js +10 -6
  76. package/lib/cjs/formula/FormulaDataTypeResolver.js.map +1 -1
  77. package/lib/cjs/grouping-mapping-widget.d.ts +0 -2
  78. package/lib/cjs/grouping-mapping-widget.js +1 -5
  79. package/lib/cjs/grouping-mapping-widget.js.map +1 -1
  80. package/lib/esm/WidgetShell/GroupingMapping.d.ts +3 -1
  81. package/lib/esm/WidgetShell/GroupingMapping.js +1 -1
  82. package/lib/esm/WidgetShell/GroupingMapping.js.map +1 -1
  83. package/lib/esm/WidgetShell/GroupingMappingContent.d.ts +2 -1
  84. package/lib/esm/WidgetShell/GroupingMappingContent.js +2 -2
  85. package/lib/esm/WidgetShell/GroupingMappingContent.js.map +1 -1
  86. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.d.ts +2 -1
  87. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +5 -19
  88. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  89. package/lib/esm/components/Groups/Groups.d.ts +2 -1
  90. package/lib/esm/components/Groups/Groups.js +2 -2
  91. package/lib/esm/components/Groups/Groups.js.map +1 -1
  92. package/lib/esm/components/Groups/GroupsView.d.ts +2 -1
  93. package/lib/esm/components/Groups/GroupsView.js +5 -5
  94. package/lib/esm/components/Groups/GroupsView.js.map +1 -1
  95. package/lib/esm/components/Groups/GroupsVisualization.d.ts +3 -1
  96. package/lib/esm/components/Groups/GroupsVisualization.js +8 -3
  97. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  98. package/lib/esm/components/Groups/GroupsVisualizationActions.d.ts +2 -1
  99. package/lib/esm/components/Groups/GroupsVisualizationActions.js +14 -7
  100. package/lib/esm/components/Groups/GroupsVisualizationActions.js.map +1 -1
  101. package/lib/esm/components/Groups/hooks/useKeySetHiliteQueries.d.ts +1 -1
  102. package/lib/esm/components/Mappings/MappingViewActionGroup.d.ts +1 -1
  103. package/lib/esm/components/Mappings/MappingViewActionGroup.js +1 -2
  104. package/lib/esm/components/Mappings/MappingViewActionGroup.js.map +1 -1
  105. package/lib/esm/components/Mappings/Mappings.d.ts +1 -0
  106. package/lib/esm/components/Mappings/Mappings.js.map +1 -1
  107. package/lib/esm/components/Mappings/MappingsView.d.ts +2 -1
  108. package/lib/esm/components/Mappings/MappingsView.js +4 -4
  109. package/lib/esm/components/Mappings/MappingsView.js.map +1 -1
  110. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.d.ts +2 -0
  111. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js +2 -1
  112. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyAction.js.map +1 -1
  113. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.d.ts +7 -8
  114. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js +23 -60
  115. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyActionWithVisuals.js.map +1 -1
  116. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.d.ts +5 -9
  117. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js +4 -13
  118. package/lib/esm/components/Properties/CalculatedProperties/SharedCalculatedPropertyForms.js.map +1 -1
  119. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.d.ts +8 -9
  120. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js +18 -142
  121. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.js.map +1 -1
  122. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationAction.scss +4 -3
  123. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +79 -22
  124. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  125. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.scss +3 -2
  126. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +2 -1
  127. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +14 -6
  128. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  129. package/lib/esm/components/Properties/PropertyMenu.d.ts +2 -1
  130. package/lib/esm/components/Properties/PropertyMenu.js +2 -7
  131. package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
  132. package/lib/esm/components/Properties/PropertyMenuWithVisualization.d.ts +1 -1
  133. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +2 -2
  134. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  135. package/lib/esm/components/Properties/PropertyTable.d.ts +2 -1
  136. package/lib/esm/components/Properties/PropertyTable.js +2 -2
  137. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  138. package/lib/esm/components/Properties/PropertyTableToolbar.d.ts +2 -1
  139. package/lib/esm/components/Properties/PropertyTableToolbar.js +3 -3
  140. package/lib/esm/components/Properties/PropertyTableToolbar.js.map +1 -1
  141. package/lib/esm/components/Properties/ScrollableExpandableBlock.d.ts +11 -0
  142. package/lib/esm/components/Properties/ScrollableExpandableBlock.js +29 -0
  143. package/lib/esm/components/Properties/ScrollableExpandableBlock.js.map +1 -0
  144. package/lib/esm/components/Properties/hooks/useFormulaValidation.d.ts +6 -3
  145. package/lib/esm/components/Properties/hooks/useFormulaValidation.js +57 -12
  146. package/lib/esm/components/Properties/hooks/useFormulaValidation.js.map +1 -1
  147. package/lib/esm/components/Properties/hooks/useForwardRef.d.ts +3 -0
  148. package/lib/esm/components/Properties/hooks/useForwardRef.js +16 -0
  149. package/lib/esm/components/Properties/hooks/useForwardRef.js.map +1 -0
  150. package/lib/esm/components/SharedComponents/ActionPanel.d.ts +3 -1
  151. package/lib/esm/components/SharedComponents/ActionPanel.js +3 -3
  152. package/lib/esm/components/SharedComponents/ActionPanel.js.map +1 -1
  153. package/lib/esm/formula/FormulaDataTypeResolver.d.ts +3 -2
  154. package/lib/esm/formula/FormulaDataTypeResolver.js +10 -6
  155. package/lib/esm/formula/FormulaDataTypeResolver.js.map +1 -1
  156. package/lib/esm/grouping-mapping-widget.d.ts +0 -2
  157. package/lib/esm/grouping-mapping-widget.js +0 -2
  158. package/lib/esm/grouping-mapping-widget.js.map +1 -1
  159. package/package.json +1 -1
  160. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  161. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -87
  162. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  163. package/lib/cjs/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  164. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  165. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -91
  166. package/lib/cjs/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
  167. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.d.ts +0 -14
  168. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js +0 -60
  169. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.js.map +0 -1
  170. package/lib/esm/components/Properties/CalculatedProperties/CalculatedPropertyTable.scss +0 -9
  171. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.d.ts +0 -13
  172. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js +0 -64
  173. package/lib/esm/components/Properties/CustomCalculations/CustomCalculationTable.js.map +0 -1
@@ -2,28 +2,36 @@
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 { SvgDelete, SvgEdit, SvgMore } from "@itwin/itwinui-icons-react";
6
- import { DropdownMenu, IconButton, MenuItem } from "@itwin/itwinui-react";
5
+ import { SvgDelete, SvgEdit, SvgFunction, SvgLabel, SvgMeasure, SvgMore } from "@itwin/itwinui-icons-react";
6
+ import { DropdownMenu, Flex, Icon, IconButton, MenuItem } from "@itwin/itwinui-react";
7
7
  import React, { useCallback } from "react";
8
8
  import { PropertyNameCell } from "../PropertyNameCell";
9
9
  import { PropertyTable } from "../PropertyTable";
10
10
  import { useGroupingMappingApiConfig } from "../../context/GroupingApiConfigContext";
11
11
  import { useMutation, useQueryClient } from "@tanstack/react-query";
12
12
  import { usePropertiesClient } from "../../context/PropertiesClientContext";
13
- export const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh }) => {
13
+ export const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, hideRefreshIcon, }) => {
14
14
  const propertiesClient = usePropertiesClient();
15
15
  const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
16
16
  const queryClient = useQueryClient();
17
17
  const columnsFactory = useCallback((handleShowDeleteModal) => [
18
18
  {
19
19
  id: "propertyName",
20
- Header: "Property",
21
20
  accessor: "propertyName",
22
21
  Cell: (value) => React.createElement(PropertyNameCell, { property: value.row.original, onClickModify: onClickModify }),
23
22
  },
23
+ {
24
+ id: "propertyTypeIcons",
25
+ Cell: (value) => (React.createElement(Flex, { flexDirection: "row", gap: "xs" },
26
+ React.createElement(Icon, { fill: value.row.original.ecProperties ? "informational" : "default" },
27
+ React.createElement(SvgLabel, null)),
28
+ React.createElement(Icon, { fill: value.row.original.calculatedPropertyType ? "informational" : "default" },
29
+ React.createElement(SvgMeasure, null)),
30
+ React.createElement(Icon, { fill: value.row.original.formula ? "informational" : "default" },
31
+ React.createElement(SvgFunction, null)))),
32
+ },
24
33
  {
25
34
  id: "dropdown",
26
- Header: "",
27
35
  width: 80,
28
36
  Cell: (value) => {
29
37
  return (React.createElement(DropdownMenu, { menuItems: (close) => [
@@ -54,6 +62,6 @@ export const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModi
54
62
  await queryClient.invalidateQueries({ queryKey: ["properties", iModelId, mappingId, groupId] });
55
63
  },
56
64
  });
57
- return (React.createElement(PropertyTable, { propertyType: "Group", columnsFactory: columnsFactory, data: groupProperties, isLoading: isLoading, onClickAdd: onClickAdd, refreshProperties: refresh, deleteProperty: deleteProperty }));
65
+ return (React.createElement(PropertyTable, { propertyType: "Group", columnsFactory: columnsFactory, data: groupProperties, isLoading: isLoading, onClickAdd: onClickAdd, refreshProperties: refresh, deleteProperty: deleteProperty, hideRefreshIcon: hideRefreshIcon }));
58
66
  };
59
67
  //# sourceMappingURL=GroupPropertyTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPropertyTable.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyTable.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { SvgDelete, SvgEdit, SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { DropdownMenu, IconButton, MenuItem } from \"@itwin/itwinui-react\";\nimport React, { useCallback } from \"react\";\nimport type { CellProps, Column } from \"react-table\";\nimport type { Property } from \"@itwin/insights-client\";\nimport { PropertyNameCell } from \"../PropertyNameCell\";\nimport { PropertyTable } from \"../PropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\n\nexport interface GroupPropertyTableProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n onClickAdd?: () => void;\n onClickModify?: (value: Property) => void;\n isLoading: boolean;\n groupProperties: Property[];\n refresh: () => Promise<void>;\n}\n\nexport const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh }: GroupPropertyTableProps) => {\n const propertiesClient = usePropertiesClient();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const queryClient = useQueryClient();\n\n const columnsFactory = useCallback(\n (handleShowDeleteModal: (value: Property) => void): Column<Property>[] => [\n {\n id: \"propertyName\",\n Header: \"Property\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<Property>) => <PropertyNameCell property={value.row.original} onClickModify={onClickModify} />,\n },\n {\n id: \"dropdown\",\n Header: \"\",\n width: 80,\n Cell: (value: CellProps<Property>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) =>\n [\n onClickModify\n ? [\n <MenuItem\n key={0}\n onClick={() => {\n onClickModify(value.row.original);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n ]\n : [],\n <MenuItem\n key={1}\n onClick={() => {\n handleShowDeleteModal(value.row.original);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((p) => p)\n }\n >\n <IconButton styleType=\"borderless\" title=\"Property Options\">\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n [onClickModify],\n );\n\n const { mutateAsync: deleteProperty } = useMutation({\n mutationFn: async (propertyId: string) => {\n const accessToken = await getAccessToken();\n await propertiesClient.deleteProperty(accessToken, mappingId, groupId, propertyId);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, groupId] });\n },\n });\n\n return (\n <PropertyTable\n propertyType=\"Group\"\n columnsFactory={columnsFactory}\n data={groupProperties}\n isLoading={isLoading}\n onClickAdd={onClickAdd}\n refreshProperties={refresh}\n deleteProperty={deleteProperty}\n />\n );\n};\n"]}
1
+ {"version":3,"file":"GroupPropertyTable.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyTable.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { SvgDelete, SvgEdit, SvgFunction, SvgLabel, SvgMeasure, SvgMore } from \"@itwin/itwinui-icons-react\";\nimport { DropdownMenu, Flex, Icon, IconButton, MenuItem } from \"@itwin/itwinui-react\";\nimport React, { useCallback } from \"react\";\nimport type { CellProps, Column } from \"react-table\";\nimport type { Property } from \"@itwin/insights-client\";\nimport { PropertyNameCell } from \"../PropertyNameCell\";\nimport { PropertyTable } from \"../PropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\n\nexport interface GroupPropertyTableProps {\n iModelId: string;\n mappingId: string;\n groupId: string;\n onClickAdd?: () => void;\n onClickModify?: (value: Property) => void;\n isLoading: boolean;\n groupProperties: Property[];\n refresh: () => Promise<void>;\n hideRefreshIcon?: boolean;\n}\n\nexport const GroupPropertyTable = ({\n mappingId,\n groupId,\n onClickAdd,\n onClickModify,\n isLoading,\n groupProperties,\n refresh,\n hideRefreshIcon,\n}: GroupPropertyTableProps) => {\n const propertiesClient = usePropertiesClient();\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const queryClient = useQueryClient();\n\n const columnsFactory = useCallback(\n (handleShowDeleteModal: (value: Property) => void): Column<Property>[] => [\n {\n id: \"propertyName\",\n accessor: \"propertyName\",\n Cell: (value: CellProps<Property>) => <PropertyNameCell property={value.row.original} onClickModify={onClickModify} />,\n },\n {\n id: \"propertyTypeIcons\",\n Cell: (value: CellProps<Property>) => (\n <Flex flexDirection={\"row\"} gap=\"xs\">\n <Icon fill={value.row.original.ecProperties ? \"informational\" : \"default\"}>\n <SvgLabel />\n </Icon>\n <Icon fill={value.row.original.calculatedPropertyType ? \"informational\" : \"default\"}>\n <SvgMeasure />\n </Icon>\n <Icon fill={value.row.original.formula ? \"informational\" : \"default\"}>\n <SvgFunction />\n </Icon>\n </Flex>\n ),\n },\n {\n id: \"dropdown\",\n width: 80,\n Cell: (value: CellProps<Property>) => {\n return (\n <DropdownMenu\n menuItems={(close: () => void) =>\n [\n onClickModify\n ? [\n <MenuItem\n key={0}\n onClick={() => {\n onClickModify(value.row.original);\n close();\n }}\n icon={<SvgEdit />}\n >\n Modify\n </MenuItem>,\n ]\n : [],\n <MenuItem\n key={1}\n onClick={() => {\n handleShowDeleteModal(value.row.original);\n close();\n }}\n icon={<SvgDelete />}\n >\n Remove\n </MenuItem>,\n ].flatMap((p) => p)\n }\n >\n <IconButton styleType=\"borderless\" title=\"Property Options\">\n <SvgMore />\n </IconButton>\n </DropdownMenu>\n );\n },\n },\n ],\n [onClickModify],\n );\n\n const { mutateAsync: deleteProperty } = useMutation({\n mutationFn: async (propertyId: string) => {\n const accessToken = await getAccessToken();\n await propertiesClient.deleteProperty(accessToken, mappingId, groupId, propertyId);\n },\n onSuccess: async () => {\n await queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, groupId] });\n },\n });\n\n return (\n <PropertyTable\n propertyType=\"Group\"\n columnsFactory={columnsFactory}\n data={groupProperties}\n isLoading={isLoading}\n onClickAdd={onClickAdd}\n refreshProperties={refresh}\n deleteProperty={deleteProperty}\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n};\n"]}
@@ -17,10 +17,11 @@ export interface PropertyMenuProps {
17
17
  hideGroupProps?: boolean;
18
18
  hideCalculatedProps?: boolean;
19
19
  hideCustomCalculationProps?: boolean;
20
+ hideRefreshIcon?: boolean;
20
21
  }
21
22
  /**
22
23
  * Component to display the properties of a group.
23
24
  * @public
24
25
  */
25
- export declare const PropertyMenu: ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, onClickAddCalculatedProperty, onClickModifyCalculatedProperty, onClickAddCustomCalculationProperty, onClickModifyCustomCalculation, hideGroupProps, hideCalculatedProps, hideCustomCalculationProps, }: PropertyMenuProps) => JSX.Element;
26
+ export declare const PropertyMenu: ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, hideGroupProps, }: PropertyMenuProps) => JSX.Element;
26
27
  //# sourceMappingURL=PropertyMenu.d.ts.map
@@ -6,8 +6,6 @@ import React, { useCallback } from "react";
6
6
  import "./PropertyMenu.scss";
7
7
  import { GroupPropertyTable } from "./GroupProperties/GroupPropertyTable";
8
8
  import { useGroupingMappingApiConfig } from "../context/GroupingApiConfigContext";
9
- import { CalculatedPropertyTable } from "./CalculatedProperties/CalculatedPropertyTable";
10
- import { CustomCalculationTable } from "./CustomCalculations/CustomCalculationTable";
11
9
  import { usePropertiesQuery } from "./hooks/usePropertiesQuery";
12
10
  import { useQueryClient } from "@tanstack/react-query";
13
11
  import { usePropertiesClient } from "../context/PropertiesClientContext";
@@ -15,7 +13,7 @@ import { usePropertiesClient } from "../context/PropertiesClientContext";
15
13
  * Component to display the properties of a group.
16
14
  * @public
17
15
  */
18
- export const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, onClickAddCalculatedProperty, onClickModifyCalculatedProperty, onClickAddCustomCalculationProperty, onClickModifyCustomCalculation, hideGroupProps = false, hideCalculatedProps = false, hideCustomCalculationProps = false, }) => {
16
+ export const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, hideGroupProps = false, }) => {
19
17
  const groupId = group.id;
20
18
  const mappingId = mapping.id;
21
19
  const { getAccessToken, iModelId } = useGroupingMappingApiConfig();
@@ -23,9 +21,6 @@ export const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickM
23
21
  const queryClient = useQueryClient();
24
22
  const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, groupId, getAccessToken, propertiesClient);
25
23
  const refreshGroupProperties = useCallback(async () => queryClient.invalidateQueries({ queryKey: ["properties", iModelId, mappingId, group.id] }), [group.id, iModelId, mappingId, queryClient]);
26
- return (React.createElement("div", { className: "gmw-property-menu-wrapper" },
27
- !hideGroupProps && (React.createElement(GroupPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddGroupProperty, onClickModify: onClickModifyGroupProperty, isLoading: isLoadingGroupProperties, groupProperties: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties })),
28
- !hideCalculatedProps && (React.createElement(CalculatedPropertyTable, { mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddCalculatedProperty, onClickModify: onClickModifyCalculatedProperty, isLoading: isLoadingGroupProperties, calculatedProperties: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties })),
29
- !hideCustomCalculationProps && (React.createElement(CustomCalculationTable, { mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddCustomCalculationProperty, onClickModify: onClickModifyCustomCalculation, isLoading: isLoadingGroupProperties, customCalculations: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties }))));
24
+ return (React.createElement("div", { className: "gmw-property-menu-wrapper" }, !hideGroupProps && (React.createElement(GroupPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddGroupProperty, onClickModify: onClickModifyGroupProperty, isLoading: isLoadingGroupProperties, groupProperties: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties, hideRefreshIcon: hideRefreshIcon }))));
30
25
  };
31
26
  //# sourceMappingURL=PropertyMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenu.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, { useCallback } from \"react\";\nimport \"./PropertyMenu.scss\";\nimport { GroupPropertyTable } from \"./GroupProperties/GroupPropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { GroupMinimal, Mapping, Property } from \"@itwin/insights-client\";\nimport { CalculatedPropertyTable } from \"./CalculatedProperties/CalculatedPropertyTable\";\nimport { CustomCalculationTable } from \"./CustomCalculations/CustomCalculationTable\";\nimport { usePropertiesQuery } from \"./hooks/usePropertiesQuery\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../context/PropertiesClientContext\";\n\n/**\n * Props for the {@link PropertyMenu} component.\n * @public\n */\nexport interface PropertyMenuProps {\n mapping: Mapping;\n group: GroupMinimal;\n onClickAddGroupProperty?: () => void;\n onClickModifyGroupProperty?: (groupProperty: Property) => void;\n onClickAddCalculatedProperty?: () => void;\n onClickModifyCalculatedProperty?: (calculatedProperty: Property) => void;\n onClickAddCustomCalculationProperty?: () => void;\n onClickModifyCustomCalculation?: (customCalculation: Property) => void;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n}\n\n/**\n * Component to display the properties of a group.\n * @public\n */\nexport const PropertyMenu = ({\n mapping,\n group,\n onClickAddGroupProperty,\n onClickModifyGroupProperty,\n onClickAddCalculatedProperty,\n onClickModifyCalculatedProperty,\n onClickAddCustomCalculationProperty,\n onClickModifyCustomCalculation,\n hideGroupProps = false,\n hideCalculatedProps = false,\n hideCustomCalculationProps = false,\n}: PropertyMenuProps) => {\n const groupId = group.id;\n const mappingId = mapping.id;\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const propertiesClient = usePropertiesClient();\n const queryClient = useQueryClient();\n\n const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, groupId, getAccessToken, propertiesClient);\n\n const refreshGroupProperties = useCallback(\n async () => queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, group.id] }),\n [group.id, iModelId, mappingId, queryClient],\n );\n\n return (\n <div className=\"gmw-property-menu-wrapper\">\n {!hideGroupProps && (\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onClickAdd={onClickAddGroupProperty}\n onClickModify={onClickModifyGroupProperty}\n isLoading={isLoadingGroupProperties}\n groupProperties={groupProperties ? groupProperties.properties : []}\n refresh={refreshGroupProperties}\n />\n )}\n {!hideCalculatedProps && (\n <CalculatedPropertyTable\n mappingId={mappingId}\n groupId={groupId}\n onClickAdd={onClickAddCalculatedProperty}\n onClickModify={onClickModifyCalculatedProperty}\n isLoading={isLoadingGroupProperties}\n calculatedProperties={groupProperties ? groupProperties.properties : []}\n refresh={refreshGroupProperties}\n />\n )}\n {!hideCustomCalculationProps && (\n <CustomCalculationTable\n mappingId={mappingId}\n groupId={groupId}\n onClickAdd={onClickAddCustomCalculationProperty}\n onClickModify={onClickModifyCustomCalculation}\n isLoading={isLoadingGroupProperties}\n customCalculations={groupProperties ? groupProperties.properties : []}\n refresh={refreshGroupProperties}\n />\n )}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenu.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAElF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAqBzE;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,eAAe,EACf,cAAc,GAAG,KAAK,GACJ,EAAE,EAAE;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;IAC7B,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,2BAA2B,EAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,wBAAwB,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAE3J,MAAM,sBAAsB,GAAG,WAAW,CACxC,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EACtG,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAC7C,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,2BAA2B,IACvC,CAAC,cAAc,IAAI,CAClB,oBAAC,kBAAkB,IACjB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,uBAAuB,EACnC,aAAa,EAAE,0BAA0B,EACzC,SAAS,EAAE,wBAAwB,EACnC,eAAe,EAAE,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAClE,OAAO,EAAE,sBAAsB,EAC/B,eAAe,EAAE,eAAe,GAChC,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React, { useCallback } from \"react\";\nimport \"./PropertyMenu.scss\";\nimport { GroupPropertyTable } from \"./GroupProperties/GroupPropertyTable\";\nimport { useGroupingMappingApiConfig } from \"../context/GroupingApiConfigContext\";\nimport type { GroupMinimal, Mapping, Property } from \"@itwin/insights-client\";\nimport { usePropertiesQuery } from \"./hooks/usePropertiesQuery\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport { usePropertiesClient } from \"../context/PropertiesClientContext\";\n\n/**\n * Props for the {@link PropertyMenu} component.\n * @public\n */\nexport interface PropertyMenuProps {\n mapping: Mapping;\n group: GroupMinimal;\n onClickAddGroupProperty?: () => void;\n onClickModifyGroupProperty?: (groupProperty: Property) => void;\n onClickAddCalculatedProperty?: () => void;\n onClickModifyCalculatedProperty?: (calculatedProperty: Property) => void;\n onClickAddCustomCalculationProperty?: () => void;\n onClickModifyCustomCalculation?: (customCalculation: Property) => void;\n hideGroupProps?: boolean;\n hideCalculatedProps?: boolean;\n hideCustomCalculationProps?: boolean;\n hideRefreshIcon?: boolean;\n}\n\n/**\n * Component to display the properties of a group.\n * @public\n */\nexport const PropertyMenu = ({\n mapping,\n group,\n onClickAddGroupProperty,\n onClickModifyGroupProperty,\n hideRefreshIcon,\n hideGroupProps = false,\n}: PropertyMenuProps) => {\n const groupId = group.id;\n const mappingId = mapping.id;\n const { getAccessToken, iModelId } = useGroupingMappingApiConfig();\n const propertiesClient = usePropertiesClient();\n const queryClient = useQueryClient();\n\n const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, groupId, getAccessToken, propertiesClient);\n\n const refreshGroupProperties = useCallback(\n async () => queryClient.invalidateQueries({ queryKey: [\"properties\", iModelId, mappingId, group.id] }),\n [group.id, iModelId, mappingId, queryClient],\n );\n\n return (\n <div className=\"gmw-property-menu-wrapper\">\n {!hideGroupProps && (\n <GroupPropertyTable\n iModelId={iModelId}\n mappingId={mappingId}\n groupId={groupId}\n onClickAdd={onClickAddGroupProperty}\n onClickModify={onClickModifyGroupProperty}\n isLoading={isLoadingGroupProperties}\n groupProperties={groupProperties ? groupProperties.properties : []}\n refresh={refreshGroupProperties}\n hideRefreshIcon={hideRefreshIcon}\n />\n )}\n </div>\n );\n};\n"]}
@@ -12,5 +12,5 @@ export interface PropertyMenuWithVisualizationProps extends PropertyMenuProps {
12
12
  * Component to display a property menu with visualization.
13
13
  * @public
14
14
  */
15
- export declare const PropertyMenuWithVisualization: ({ group, color, ...rest }: PropertyMenuWithVisualizationProps) => JSX.Element;
15
+ export declare const PropertyMenuWithVisualization: ({ group, color, hideRefreshIcon, ...rest }: PropertyMenuWithVisualizationProps) => JSX.Element;
16
16
  //# sourceMappingURL=PropertyMenuWithVisualization.d.ts.map
@@ -13,14 +13,14 @@ import "./PropertyMenuWithVisualization.scss";
13
13
  * Component to display a property menu with visualization.
14
14
  * @public
15
15
  */
16
- export const PropertyMenuWithVisualization = ({ group, color, ...rest }) => {
16
+ export const PropertyMenuWithVisualization = ({ group, color, hideRefreshIcon, ...rest }) => {
17
17
  const [isInformationPanelOpen, setIsInformationPanelOpen] = useState(false);
18
18
  return (React.createElement(InformationPanelWrapper, { className: "gmw-property-menu-vis-wrapper" },
19
19
  React.createElement("div", { className: "gmw-property-menu-vis-toolbar" },
20
20
  React.createElement(GroupColorToggle, { group: group, color: color, labelPosition: "left" }),
21
21
  React.createElement(IconButton, { styleType: "borderless", onClick: () => setIsInformationPanelOpen(true), title: "Group Information" },
22
22
  React.createElement(SvgProperties, null))),
23
- React.createElement(PropertyMenu, { group: group, ...rest }),
23
+ React.createElement(PropertyMenu, { group: group, hideRefreshIcon: hideRefreshIcon, ...rest }),
24
24
  React.createElement(GroupInformationPanel, { isOpen: isInformationPanelOpen, onClose: () => setIsInformationPanelOpen(false), query: group.query, groupName: group.groupName })));
25
25
  };
26
26
  //# sourceMappingURL=PropertyMenuWithVisualization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenuWithVisualization.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenuWithVisualization.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,sCAAsC,CAAC;AAU9C;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,EAAsC,EAAE,EAAE;IAC7G,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErF,OAAO,CACL,oBAAC,uBAAuB,IAAC,SAAS,EAAC,+BAA+B;QAChE,6BAAK,SAAS,EAAC,+BAA+B;YAC5C,oBAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG;YACrE,oBAAC,UAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,mBAAmB;gBAC1G,oBAAC,aAAa,OAAG,CACN,CACT;QACN,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,KAAM,IAAI,GAAI;QACxC,oBAAC,qBAAqB,IAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,CAClI,CAC3B,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, { useState } from \"react\";\nimport type { PropertyMenuProps } from \"./PropertyMenu\";\nimport { PropertyMenu } from \"./PropertyMenu\";\nimport { GroupColorToggle } from \"./GroupColorToggle\";\nimport { IconButton, InformationPanelWrapper } from \"@itwin/itwinui-react\";\nimport { GroupInformationPanel } from \"./GroupInformationPanel\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport \"./PropertyMenuWithVisualization.scss\";\n\n/**\n * Properties for the {@link PropertyMenuWithVisualization} component.\n * @public\n */\nexport interface PropertyMenuWithVisualizationProps extends PropertyMenuProps {\n color: string;\n}\n\n/**\n * Component to display a property menu with visualization.\n * @public\n */\nexport const PropertyMenuWithVisualization = ({ group, color, ...rest }: PropertyMenuWithVisualizationProps) => {\n const [isInformationPanelOpen, setIsInformationPanelOpen] = useState<boolean>(false);\n\n return (\n <InformationPanelWrapper className=\"gmw-property-menu-vis-wrapper\">\n <div className=\"gmw-property-menu-vis-toolbar\">\n <GroupColorToggle group={group} color={color} labelPosition=\"left\" />\n <IconButton styleType=\"borderless\" onClick={() => setIsInformationPanelOpen(true)} title=\"Group Information\">\n <SvgProperties />\n </IconButton>\n </div>\n <PropertyMenu group={group} {...rest} />\n <GroupInformationPanel isOpen={isInformationPanelOpen} onClose={() => setIsInformationPanelOpen(false)} query={group.query} groupName={group.groupName} />\n </InformationPanelWrapper>\n );\n};\n"]}
1
+ {"version":3,"file":"PropertyMenuWithVisualization.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenuWithVisualization.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,sCAAsC,CAAC;AAU9C;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI,EAAsC,EAAE,EAAE;IAC9H,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAErF,OAAO,CACL,oBAAC,uBAAuB,IAAC,SAAS,EAAC,+BAA+B;QAChE,6BAAK,SAAS,EAAC,+BAA+B;YAC5C,oBAAC,gBAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG;YACrE,oBAAC,UAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,mBAAmB;gBAC1G,oBAAC,aAAa,OAAG,CACN,CACT;QACN,oBAAC,YAAY,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,KAAM,IAAI,GAAI;QAC1E,oBAAC,qBAAqB,IAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,GAAI,CAClI,CAC3B,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, { useState } from \"react\";\nimport type { PropertyMenuProps } from \"./PropertyMenu\";\nimport { PropertyMenu } from \"./PropertyMenu\";\nimport { GroupColorToggle } from \"./GroupColorToggle\";\nimport { IconButton, InformationPanelWrapper } from \"@itwin/itwinui-react\";\nimport { GroupInformationPanel } from \"./GroupInformationPanel\";\nimport { SvgProperties } from \"@itwin/itwinui-icons-react\";\nimport \"./PropertyMenuWithVisualization.scss\";\n\n/**\n * Properties for the {@link PropertyMenuWithVisualization} component.\n * @public\n */\nexport interface PropertyMenuWithVisualizationProps extends PropertyMenuProps {\n color: string;\n}\n\n/**\n * Component to display a property menu with visualization.\n * @public\n */\nexport const PropertyMenuWithVisualization = ({ group, color, hideRefreshIcon, ...rest }: PropertyMenuWithVisualizationProps) => {\n const [isInformationPanelOpen, setIsInformationPanelOpen] = useState<boolean>(false);\n\n return (\n <InformationPanelWrapper className=\"gmw-property-menu-vis-wrapper\">\n <div className=\"gmw-property-menu-vis-toolbar\">\n <GroupColorToggle group={group} color={color} labelPosition=\"left\" />\n <IconButton styleType=\"borderless\" onClick={() => setIsInformationPanelOpen(true)} title=\"Group Information\">\n <SvgProperties />\n </IconButton>\n </div>\n <PropertyMenu group={group} hideRefreshIcon={hideRefreshIcon} {...rest} />\n <GroupInformationPanel isOpen={isInformationPanelOpen} onClose={() => setIsInformationPanelOpen(false)} query={group.query} groupName={group.groupName} />\n </InformationPanelWrapper>\n );\n};\n"]}
@@ -13,6 +13,7 @@ export interface PropertyTableProps<T extends PropertyTableItem> {
13
13
  onClickAdd?: () => void;
14
14
  refreshProperties: () => Promise<void>;
15
15
  deleteProperty: (propertyId: string) => Promise<void>;
16
+ hideRefreshIcon?: boolean;
16
17
  }
17
- export declare const PropertyTable: <T extends PropertyTableItem>({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, }: PropertyTableProps<T>) => JSX.Element;
18
+ export declare const PropertyTable: <T extends PropertyTableItem>({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, }: PropertyTableProps<T>) => JSX.Element;
18
19
  //# sourceMappingURL=PropertyTable.d.ts.map
@@ -7,7 +7,7 @@ import React, { useCallback, useMemo, useState } from "react";
7
7
  import DeleteModal from "../SharedComponents/DeleteModal";
8
8
  import { PropertyTableToolbar } from "./PropertyTableToolbar";
9
9
  import "./PropertyTable.scss";
10
- export const PropertyTable = ({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, }) => {
10
+ export const PropertyTable = ({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, }) => {
11
11
  const [showDeleteModal, setShowDeleteModal] = useState(undefined);
12
12
  const handleDeleteProperty = useCallback(async () => {
13
13
  await deleteProperty(showDeleteModal?.id ?? "");
@@ -20,7 +20,7 @@ export const PropertyTable = ({ propertyType, columnsFactory, data, isLoading, o
20
20
  };
21
21
  const memoizedColumns = useMemo(() => columnsFactory(handleShowDeleteModal), [columnsFactory, handleShowDeleteModal]);
22
22
  return (React.createElement("div", { className: "gmw-property-table-container" },
23
- React.createElement(PropertyTableToolbar, { propertyType: propertyType, onClickAddProperty: onClickAdd, refreshProperties: refreshProperties, isLoading: isLoading }),
23
+ React.createElement(PropertyTableToolbar, { propertyType: propertyType, onClickAddProperty: onClickAdd, refreshProperties: refreshProperties, isLoading: isLoading, hideRefreshIcon: hideRefreshIcon }),
24
24
  React.createElement(Table, { data: isLoading ? [] : data, density: "extra-condensed", columns: memoizedColumns, emptyTableContent: `No ${propertyType} Properties`, isSortable: true, isLoading: isLoading }),
25
25
  showDeleteModal && React.createElement(DeleteModal, { entityName: showDeleteModal.propertyName, onClose: handleCloseDeleteModal, onDelete: handleDeleteProperty })));
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyTable.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTable.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,sBAAsB,CAAC;AAiB9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAA8B,EACzD,YAAY,EACZ,cAAc,EACd,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,cAAc,GACQ,EAAE,EAAE;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,SAAS,CAAC,CAAC;IAEjF,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClD,MAAM,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,QAAW,EAAE,EAAE;QACxD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEtH,OAAO,CACL,6BAAK,SAAS,EAAC,8BAA8B;QAC3C,oBAAC,oBAAoB,IAAC,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,GAAI;QAChJ,oBAAC,KAAK,IACJ,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAC3B,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,MAAM,YAAY,aAAa,EAClD,UAAU,QACV,SAAS,EAAE,SAAS,GACpB;QACD,eAAe,IAAI,oBAAC,WAAW,IAAC,UAAU,EAAE,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,GAAI,CAC1I,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { Table } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport type { Column } from \"react-table\";\nimport type { CreateTypeFromInterface } from \"../../common/utils\";\nimport DeleteModal from \"../SharedComponents/DeleteModal\";\nimport { PropertyTableToolbar } from \"./PropertyTableToolbar\";\nimport \"./PropertyTable.scss\";\n\nexport interface PropertyTableItem {\n propertyName: string;\n id: string;\n}\n\nexport interface PropertyTableProps<T extends PropertyTableItem> {\n propertyType: string;\n columnsFactory: (handleShowDeleteModal: (value: T) => void) => Array<Column<T>>;\n data: T[];\n isLoading: boolean;\n onClickAdd?: () => void;\n refreshProperties: () => Promise<void>;\n deleteProperty: (propertyId: string) => Promise<void>;\n}\n\nexport const PropertyTable = <T extends PropertyTableItem>({\n propertyType,\n columnsFactory,\n data,\n isLoading,\n onClickAdd,\n refreshProperties,\n deleteProperty,\n}: PropertyTableProps<T>) => {\n const [showDeleteModal, setShowDeleteModal] = useState<T | undefined>(undefined);\n\n const handleDeleteProperty = useCallback(async () => {\n await deleteProperty(showDeleteModal?.id ?? \"\");\n }, [deleteProperty, showDeleteModal?.id]);\n\n const handleShowDeleteModal = useCallback((property: T) => {\n setShowDeleteModal(property);\n }, []);\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(undefined);\n };\n\n const memoizedColumns = useMemo(() => columnsFactory(handleShowDeleteModal), [columnsFactory, handleShowDeleteModal]);\n\n return (\n <div className=\"gmw-property-table-container\">\n <PropertyTableToolbar propertyType={propertyType} onClickAddProperty={onClickAdd} refreshProperties={refreshProperties} isLoading={isLoading} />\n <Table<CreateTypeFromInterface<T>>\n data={isLoading ? [] : data}\n density=\"extra-condensed\"\n columns={memoizedColumns}\n emptyTableContent={`No ${propertyType} Properties`}\n isSortable\n isLoading={isLoading}\n />\n {showDeleteModal && <DeleteModal entityName={showDeleteModal.propertyName} onClose={handleCloseDeleteModal} onDelete={handleDeleteProperty} />}\n </div>\n );\n};\n"]}
1
+ {"version":3,"file":"PropertyTable.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTable.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,WAAW,MAAM,iCAAiC,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,sBAAsB,CAAC;AAkB9B,MAAM,CAAC,MAAM,aAAa,GAAG,CAA8B,EACzD,YAAY,EACZ,cAAc,EACd,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,GACO,EAAE,EAAE;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAgB,SAAS,CAAC,CAAC;IAEjF,MAAM,oBAAoB,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAClD,MAAM,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1C,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,QAAW,EAAE,EAAE;QACxD,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,sBAAsB,GAAG,GAAG,EAAE;QAClC,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEtH,OAAO,CACL,6BAAK,SAAS,EAAC,8BAA8B;QAC3C,oBAAC,oBAAoB,IACnB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,UAAU,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAChC;QACF,oBAAC,KAAK,IACJ,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAC3B,OAAO,EAAC,iBAAiB,EACzB,OAAO,EAAE,eAAe,EACxB,iBAAiB,EAAE,MAAM,YAAY,aAAa,EAClD,UAAU,QACV,SAAS,EAAE,SAAS,GACpB;QACD,eAAe,IAAI,oBAAC,WAAW,IAAC,UAAU,EAAE,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,GAAI,CAC1I,CACP,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { Table } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useMemo, useState } from \"react\";\nimport type { Column } from \"react-table\";\nimport type { CreateTypeFromInterface } from \"../../common/utils\";\nimport DeleteModal from \"../SharedComponents/DeleteModal\";\nimport { PropertyTableToolbar } from \"./PropertyTableToolbar\";\nimport \"./PropertyTable.scss\";\n\nexport interface PropertyTableItem {\n propertyName: string;\n id: string;\n}\n\nexport interface PropertyTableProps<T extends PropertyTableItem> {\n propertyType: string;\n columnsFactory: (handleShowDeleteModal: (value: T) => void) => Array<Column<T>>;\n data: T[];\n isLoading: boolean;\n onClickAdd?: () => void;\n refreshProperties: () => Promise<void>;\n deleteProperty: (propertyId: string) => Promise<void>;\n hideRefreshIcon?: boolean;\n}\n\nexport const PropertyTable = <T extends PropertyTableItem>({\n propertyType,\n columnsFactory,\n data,\n isLoading,\n onClickAdd,\n refreshProperties,\n deleteProperty,\n hideRefreshIcon,\n}: PropertyTableProps<T>) => {\n const [showDeleteModal, setShowDeleteModal] = useState<T | undefined>(undefined);\n\n const handleDeleteProperty = useCallback(async () => {\n await deleteProperty(showDeleteModal?.id ?? \"\");\n }, [deleteProperty, showDeleteModal?.id]);\n\n const handleShowDeleteModal = useCallback((property: T) => {\n setShowDeleteModal(property);\n }, []);\n\n const handleCloseDeleteModal = () => {\n setShowDeleteModal(undefined);\n };\n\n const memoizedColumns = useMemo(() => columnsFactory(handleShowDeleteModal), [columnsFactory, handleShowDeleteModal]);\n\n return (\n <div className=\"gmw-property-table-container\">\n <PropertyTableToolbar\n propertyType={propertyType}\n onClickAddProperty={onClickAdd}\n refreshProperties={refreshProperties}\n isLoading={isLoading}\n hideRefreshIcon={hideRefreshIcon}\n />\n <Table<CreateTypeFromInterface<T>>\n data={isLoading ? [] : data}\n density=\"extra-condensed\"\n columns={memoizedColumns}\n emptyTableContent={`No ${propertyType} Properties`}\n isSortable\n isLoading={isLoading}\n />\n {showDeleteModal && <DeleteModal entityName={showDeleteModal.propertyName} onClose={handleCloseDeleteModal} onDelete={handleDeleteProperty} />}\n </div>\n );\n};\n"]}
@@ -5,6 +5,7 @@ export interface PropertyTableToolbarProps {
5
5
  onClickAddProperty?: () => void;
6
6
  refreshProperties: () => void;
7
7
  isLoading: boolean;
8
+ hideRefreshIcon?: boolean;
8
9
  }
9
- export declare const PropertyTableToolbar: ({ propertyType, onClickAddProperty, refreshProperties, isLoading }: PropertyTableToolbarProps) => JSX.Element;
10
+ export declare const PropertyTableToolbar: ({ propertyType, onClickAddProperty, refreshProperties, isLoading, hideRefreshIcon }: PropertyTableToolbarProps) => JSX.Element;
10
11
  //# sourceMappingURL=PropertyTableToolbar.d.ts.map
@@ -6,11 +6,11 @@ import React from "react";
6
6
  import { SvgAdd, SvgRefresh } from "@itwin/itwinui-icons-react";
7
7
  import { Button, IconButton } from "@itwin/itwinui-react";
8
8
  import "./PropertyTableToolbar.scss";
9
- export const PropertyTableToolbar = ({ propertyType, onClickAddProperty, refreshProperties, isLoading }) => (React.createElement("div", { className: "gmw-property-table-toolbar" },
9
+ export const PropertyTableToolbar = ({ propertyType, onClickAddProperty, refreshProperties, isLoading, hideRefreshIcon }) => (React.createElement("div", { className: "gmw-property-table-toolbar" },
10
10
  onClickAddProperty && (React.createElement(Button, { startIcon: React.createElement(SvgAdd, null), styleType: "high-visibility", onClick: onClickAddProperty },
11
11
  "Add ",
12
12
  propertyType,
13
13
  " Property")),
14
- React.createElement(IconButton, { title: "Refresh", className: "gmw-property-table-refresh-button", onClick: refreshProperties, disabled: isLoading, styleType: "borderless" },
15
- React.createElement(SvgRefresh, null))));
14
+ !hideRefreshIcon && (React.createElement(IconButton, { title: "Refresh", className: "gmw-property-table-refresh-button", onClick: refreshProperties, disabled: isLoading, styleType: "borderless" },
15
+ React.createElement(SvgRefresh, null)))));
16
16
  //# sourceMappingURL=PropertyTableToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyTableToolbar.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTableToolbar.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,6BAA6B,CAAC;AASrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAA6B,EAAE,EAAE,CAAC,CACrI,6BAAK,SAAS,EAAC,4BAA4B;IACxC,kBAAkB,IAAI,CACrB,oBAAC,MAAM,IAAC,SAAS,EAAE,oBAAC,MAAM,OAAG,EAAE,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,kBAAkB;;QAC/E,YAAY;oBACV,CACV;IACD,oBAAC,UAAU,IAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAC,mCAAmC,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAC,YAAY;QAC/I,oBAAC,UAAU,OAAG,CACH,CACT,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgAdd, SvgRefresh } from \"@itwin/itwinui-icons-react\";\nimport { Button, IconButton } from \"@itwin/itwinui-react\";\nimport \"./PropertyTableToolbar.scss\";\n\nexport interface PropertyTableToolbarProps {\n propertyType: string;\n onClickAddProperty?: () => void;\n refreshProperties: () => void;\n isLoading: boolean;\n}\n\nexport const PropertyTableToolbar = ({ propertyType, onClickAddProperty, refreshProperties, isLoading }: PropertyTableToolbarProps) => (\n <div className=\"gmw-property-table-toolbar\">\n {onClickAddProperty && (\n <Button startIcon={<SvgAdd />} styleType=\"high-visibility\" onClick={onClickAddProperty}>\n Add {propertyType} Property\n </Button>\n )}\n <IconButton title=\"Refresh\" className=\"gmw-property-table-refresh-button\" onClick={refreshProperties} disabled={isLoading} styleType=\"borderless\">\n <SvgRefresh />\n </IconButton>\n </div>\n);\n"]}
1
+ {"version":3,"file":"PropertyTableToolbar.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTableToolbar.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,6BAA6B,CAAC;AAUrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,eAAe,EAA6B,EAAE,EAAE,CAAC,CACtJ,6BAAK,SAAS,EAAC,4BAA4B;IACxC,kBAAkB,IAAI,CACrB,oBAAC,MAAM,IAAC,SAAS,EAAE,oBAAC,MAAM,OAAG,EAAE,SAAS,EAAC,iBAAiB,EAAC,OAAO,EAAE,kBAAkB;;QAC/E,YAAY;oBACV,CACV;IACA,CAAC,eAAe,IAAI,CACnB,oBAAC,UAAU,IAAC,KAAK,EAAC,SAAS,EAAC,SAAS,EAAC,mCAAmC,EAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAC,YAAY;QAC/I,oBAAC,UAAU,OAAG,CACH,CACd,CACG,CACP,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { SvgAdd, SvgRefresh } from \"@itwin/itwinui-icons-react\";\nimport { Button, IconButton } from \"@itwin/itwinui-react\";\nimport \"./PropertyTableToolbar.scss\";\n\nexport interface PropertyTableToolbarProps {\n propertyType: string;\n onClickAddProperty?: () => void;\n refreshProperties: () => void;\n isLoading: boolean;\n hideRefreshIcon?: boolean;\n}\n\nexport const PropertyTableToolbar = ({ propertyType, onClickAddProperty, refreshProperties, isLoading, hideRefreshIcon }: PropertyTableToolbarProps) => (\n <div className=\"gmw-property-table-toolbar\">\n {onClickAddProperty && (\n <Button startIcon={<SvgAdd />} styleType=\"high-visibility\" onClick={onClickAddProperty}>\n Add {propertyType} Property\n </Button>\n )}\n {!hideRefreshIcon && (\n <IconButton title=\"Refresh\" className=\"gmw-property-table-refresh-button\" onClick={refreshProperties} disabled={isLoading} styleType=\"borderless\">\n <SvgRefresh />\n </IconButton>\n )}\n </div>\n);\n"]}
@@ -0,0 +1,11 @@
1
+ import type { ExpandableBlockProps } from "@itwin/itwinui-react";
2
+ import React from "react";
3
+ interface ScrollableExpandableBlockProps extends ExpandableBlockProps {
4
+ parentRef?: React.RefObject<HTMLDivElement>;
5
+ children: React.ReactNode;
6
+ isExpanded: boolean;
7
+ setIsExpanded: (isExpanded: boolean) => void;
8
+ }
9
+ export declare const ScrollableExpandableBlock: React.ForwardRefExoticComponent<ScrollableExpandableBlockProps & React.RefAttributes<HTMLDivElement>>;
10
+ export {};
11
+ //# sourceMappingURL=ScrollableExpandableBlock.d.ts.map
@@ -0,0 +1,29 @@
1
+ import { ExpandableBlock } from "@itwin/itwinui-react";
2
+ import React, { forwardRef, useCallback } from "react";
3
+ import { useForwardRef } from "./hooks/useForwardRef";
4
+ export const ScrollableExpandableBlock = forwardRef(function ExpandableBlockWithRef(props, forwardRef) {
5
+ const { parentRef, children, isExpanded, setIsExpanded, ...rest } = props;
6
+ const forwardedRef = useForwardRef(forwardRef);
7
+ const scrollToBlock = useCallback(() => {
8
+ setTimeout(() => {
9
+ if (parentRef?.current && forwardedRef.current) {
10
+ parentRef?.current.scrollTo({
11
+ top: forwardedRef.current.offsetTop,
12
+ behavior: "smooth",
13
+ });
14
+ }
15
+ }, 500);
16
+ }, [forwardedRef, parentRef]);
17
+ const handleToggle = useCallback((isExpanding) => {
18
+ if (isExpanding === true) {
19
+ setIsExpanded(true);
20
+ scrollToBlock();
21
+ }
22
+ else {
23
+ setIsExpanded(false);
24
+ }
25
+ }, [scrollToBlock, setIsExpanded]);
26
+ return (React.createElement("div", { ref: forwardedRef },
27
+ React.createElement(ExpandableBlock, { onToggle: handleToggle, isExpanded: isExpanded, ...rest }, children)));
28
+ });
29
+ //# sourceMappingURL=ScrollableExpandableBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollableExpandableBlock.js","sourceRoot":"","sources":["../../../../src/components/Properties/ScrollableExpandableBlock.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAStD,MAAM,CAAC,MAAM,yBAAyB,GAAG,UAAU,CAAiD,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU;IACnJ,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAC,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACzE,MAAM,YAAY,GAAG,aAAa,CAAiB,UAAU,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,SAAS,EAAE,OAAO,IAAI,YAAY,CAAC,OAAO,EAAE;gBAC9C,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC;oBAC1B,GAAG,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS;oBACnC,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;aACJ;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE9B,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,WAAoB,EAAE,EAAE;QACvB,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,aAAa,EAAE,CAAC;SACjB;aAAK;YACJ,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;IACH,CAAC,EACD,CAAC,aAAa,EAAE,aAAa,CAAC,CAC/B,CAAC;IAEF,OAAO,CACL,6BAAK,GAAG,EAAE,YAAY;QACpB,oBAAC,eAAe,IAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,KAAM,IAAI,IACtE,QAAQ,CACO,CACd,CACP,CAAC;AACJ,CAAC,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 { ExpandableBlockProps } from \"@itwin/itwinui-react\";\nimport { ExpandableBlock } from \"@itwin/itwinui-react\";\nimport React, { forwardRef, useCallback } from \"react\";\nimport { useForwardRef } from \"./hooks/useForwardRef\";\n\ninterface ScrollableExpandableBlockProps extends ExpandableBlockProps {\n parentRef?: React.RefObject<HTMLDivElement>;\n children: React.ReactNode;\n isExpanded: boolean;\n setIsExpanded: (isExpanded: boolean) => void;\n}\n\nexport const ScrollableExpandableBlock = forwardRef<HTMLDivElement, ScrollableExpandableBlockProps>(function ExpandableBlockWithRef(props, forwardRef) {\n const { parentRef, children, isExpanded, setIsExpanded,...rest } = props;\n const forwardedRef = useForwardRef<HTMLDivElement>(forwardRef);\n\n const scrollToBlock = useCallback(() => {\n setTimeout(() => {\n if (parentRef?.current && forwardedRef.current) {\n parentRef?.current.scrollTo({\n top: forwardedRef.current.offsetTop,\n behavior: \"smooth\",\n });\n }\n }, 500);\n }, [forwardedRef, parentRef]);\n\n const handleToggle = useCallback(\n (isExpanding: boolean) => {\n if (isExpanding === true) {\n setIsExpanded(true);\n scrollToBlock();\n }else {\n setIsExpanded(false);\n }\n },\n [scrollToBlock, setIsExpanded],\n );\n\n return (\n <div ref={forwardedRef}>\n <ExpandableBlock onToggle={handleToggle} isExpanded={isExpanded} {...rest}>\n {children}\n </ExpandableBlock>\n </div>\n );\n});\n"]}
@@ -1,7 +1,10 @@
1
- import type { DataType, PropertyMap } from "../../../formula/Types";
2
- export declare function useFormulaValidation(formulaName: string, formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void): {
3
- isValid: boolean;
1
+ import type { DataType as FormulaDataType } from "../../../formula/Types";
2
+ import type { Property } from "@itwin/insights-client";
3
+ import { DataType } from "@itwin/insights-client";
4
+ export declare function useFormulaValidation(formulaName: string, formula: string | undefined, groupProperties: Property[], setFormulaErrorMessage: (s: string | undefined) => void, providedDataType?: DataType): {
5
+ isFormulaValid: boolean;
4
6
  inferredDataType: DataType | undefined;
5
7
  forceValidation: () => boolean;
6
8
  };
9
+ export declare const inferToPropertyDataType: (value: FormulaDataType | undefined) => DataType;
7
10
  //# sourceMappingURL=useFormulaValidation.d.ts.map
@@ -5,25 +5,70 @@
5
5
  import { useEffect, useState } from "react";
6
6
  import { resolveFormulaDataType } from "../../../formula/FormulaDataTypeResolver";
7
7
  import { debounce } from "../../../common/utils";
8
- function validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid, setDataType) {
8
+ import { DataType } from "@itwin/insights-client";
9
+ function validate(formulaName, formula, properties, setFormulaErrorMessage, setIsFormulaValid, setDataType, providedDataType) {
9
10
  if (!formula) {
10
- setFormulaErrorMessage("");
11
- setIsValid(false);
11
+ setFormulaErrorMessage(undefined);
12
+ setIsFormulaValid(false);
12
13
  setDataType(undefined);
13
14
  return false;
14
15
  }
15
- const resolveFormulaType = resolveFormulaDataType(formulaName, formula, properties);
16
- const error = resolveFormulaType.errorMessage ?? "";
16
+ const resolveFormulaType = resolveFormulaDataType(formulaName, formula, properties, providedDataType);
17
+ const error = resolveFormulaType.errorMessage;
17
18
  setFormulaErrorMessage(error);
18
- setIsValid(!error);
19
- setDataType(resolveFormulaType.value);
19
+ setIsFormulaValid(!error);
20
+ setDataType(inferToPropertyDataType(resolveFormulaType.value));
20
21
  return !error;
21
22
  }
22
- const debouncedValidationFunc = debounce(validate, 5000);
23
- export function useFormulaValidation(formulaName, formula, properties, setFormulaErrorMessage) {
24
- const [isValid, setIsValid] = useState(false);
23
+ const debouncedValidationFunc = debounce(validate, 2000);
24
+ export function useFormulaValidation(formulaName, formula, groupProperties, setFormulaErrorMessage, providedDataType) {
25
+ const [isFormulaValid, setIsFormulaValid] = useState(false);
25
26
  const [inferredDataType, setDataType] = useState(undefined);
26
- useEffect(() => debouncedValidationFunc(formulaName, formula, properties, setFormulaErrorMessage, setIsValid, setDataType), [formulaName, formula, properties, setFormulaErrorMessage]);
27
- return { isValid, inferredDataType, forceValidation: () => validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid, setDataType) };
27
+ const [propertyMap, setPropertyMap] = useState({});
28
+ useEffect(() => setPropertyMap(convertToPropertyMap(groupProperties)), [groupProperties]);
29
+ useEffect(() => debouncedValidationFunc(formulaName, formula, propertyMap, setFormulaErrorMessage, setIsFormulaValid, setDataType, providedDataType), [formulaName, formula, groupProperties, setFormulaErrorMessage, propertyMap, providedDataType]);
30
+ return {
31
+ isFormulaValid,
32
+ inferredDataType,
33
+ forceValidation: () => validate(formulaName, formula, propertyMap, setFormulaErrorMessage, setIsFormulaValid, setDataType, providedDataType),
34
+ };
28
35
  }
36
+ export const inferToPropertyDataType = (value) => {
37
+ switch (value) {
38
+ case "Double":
39
+ return DataType.Double;
40
+ case "Integer":
41
+ return DataType.Integer;
42
+ case "String":
43
+ return DataType.String;
44
+ case "Boolean":
45
+ return DataType.Boolean;
46
+ default:
47
+ return DataType.String;
48
+ }
49
+ };
50
+ const convertToPropertyMap = (properties, selectedPropertyName) => {
51
+ const map = {};
52
+ const selectedLowerName = selectedPropertyName?.toLowerCase();
53
+ properties.forEach((p) => {
54
+ const lowerName = p.propertyName?.toLowerCase();
55
+ if (lowerName && lowerName !== selectedLowerName)
56
+ map[lowerName] = stringToPossibleDataType(p.dataType);
57
+ });
58
+ return map;
59
+ };
60
+ const stringToPossibleDataType = (str) => {
61
+ switch (str?.toLowerCase()) {
62
+ case "double":
63
+ return "Double";
64
+ case "integer":
65
+ return "Integer";
66
+ case "string":
67
+ return "String";
68
+ case "boolean":
69
+ return "Boolean";
70
+ default:
71
+ return "Undefined";
72
+ }
73
+ };
29
74
  //# sourceMappingURL=useFormulaValidation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormulaValidation.js","sourceRoot":"","sources":["../../../../../src/components/Properties/hooks/useFormulaValidation.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,SAAS,QAAQ,CACf,WAAmB,EACnB,OAAe,EACf,UAAuB,EACvB,sBAA2C,EAC3C,UAAgC,EAChC,WAA6D;IAE7D,IAAI,CAAC,OAAO,EAAE;QACZ,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC3B,UAAU,CAAC,KAAK,CAAC,CAAC;QAClB,WAAW,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;KACd;IAED,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,kBAAkB,CAAC,YAAY,IAAI,EAAE,CAAC;IACpD,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC9B,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC;IACnB,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC;AAChB,CAAC;AAED,MAAM,uBAAuB,GAAG,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAEzD,MAAM,UAAU,oBAAoB,CAAC,WAAmB,EAAE,OAAe,EAAE,UAAuB,EAAE,sBAA2C;IAC7I,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,CAAC,gBAAgB,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAuB,SAAS,CAAC,CAAC;IAClF,SAAS,CACP,GAAG,EAAE,CAAC,uBAAuB,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,CAAC,EAChH,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAC3D,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;AAC3J,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 { useEffect, useState } from \"react\";\nimport { resolveFormulaDataType } from \"../../../formula/FormulaDataTypeResolver\";\nimport type { DataType, PropertyMap } from \"../../../formula/Types\";\nimport { debounce } from \"../../../common/utils\";\n\nfunction validate(\n formulaName: string,\n formula: string,\n properties: PropertyMap,\n setFormulaErrorMessage: (s: string) => void,\n setIsValid: (b: boolean) => void,\n setDataType: (inferredDataType: DataType | undefined) => void,\n): boolean {\n if (!formula) {\n setFormulaErrorMessage(\"\");\n setIsValid(false);\n setDataType(undefined);\n return false;\n }\n\n const resolveFormulaType = resolveFormulaDataType(formulaName, formula, properties);\n const error = resolveFormulaType.errorMessage ?? \"\";\n setFormulaErrorMessage(error);\n setIsValid(!error);\n setDataType(resolveFormulaType.value);\n return !error;\n}\n\nconst debouncedValidationFunc = debounce(validate, 5000);\n\nexport function useFormulaValidation(formulaName: string, formula: string, properties: PropertyMap, setFormulaErrorMessage: (s: string) => void) {\n const [isValid, setIsValid] = useState(false);\n const [inferredDataType, setDataType] = useState<DataType | undefined>(undefined);\n useEffect(\n () => debouncedValidationFunc(formulaName, formula, properties, setFormulaErrorMessage, setIsValid, setDataType),\n [formulaName, formula, properties, setFormulaErrorMessage],\n );\n return { isValid, inferredDataType, forceValidation: () => validate(formulaName, formula, properties, setFormulaErrorMessage, setIsValid, setDataType) };\n}\n"]}
1
+ {"version":3,"file":"useFormulaValidation.js","sourceRoot":"","sources":["../../../../../src/components/Properties/hooks/useFormulaValidation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport { useEffect, useState } from \"react\";\nimport { resolveFormulaDataType } from \"../../../formula/FormulaDataTypeResolver\";\nimport type { DataType as FormulaDataType, PossibleDataType, PropertyMap } from \"../../../formula/Types\";\nimport { debounce } from \"../../../common/utils\";\nimport type { Property } from \"@itwin/insights-client\";\nimport { DataType } from \"@itwin/insights-client\";\n\nfunction validate(\n formulaName: string,\n formula: string | undefined,\n properties: PropertyMap,\n setFormulaErrorMessage: (s: string | undefined) => void,\n setIsFormulaValid: (b: boolean) => void,\n setDataType: (inferredDataType: DataType | undefined) => void,\n providedDataType?: DataType,\n): boolean {\n if (!formula) {\n setFormulaErrorMessage(undefined);\n setIsFormulaValid(false);\n setDataType(undefined);\n return false;\n }\n\n const resolveFormulaType = resolveFormulaDataType(formulaName, formula, properties, providedDataType);\n const error = resolveFormulaType.errorMessage;\n setFormulaErrorMessage(error);\n setIsFormulaValid(!error);\n setDataType(inferToPropertyDataType(resolveFormulaType.value));\n return !error;\n}\n\nconst debouncedValidationFunc = debounce(validate, 2000);\n\nexport function useFormulaValidation(\n formulaName: string,\n formula: string | undefined,\n groupProperties: Property[],\n setFormulaErrorMessage: (s: string | undefined) => void,\n providedDataType?: DataType,\n) {\n const [isFormulaValid, setIsFormulaValid] = useState(false);\n const [inferredDataType, setDataType] = useState<DataType | undefined>(undefined);\n const [propertyMap, setPropertyMap] = useState<PropertyMap>({});\n useEffect(() => setPropertyMap(convertToPropertyMap(groupProperties)), [groupProperties]);\n useEffect(\n () => debouncedValidationFunc(formulaName, formula, propertyMap, setFormulaErrorMessage, setIsFormulaValid, setDataType, providedDataType),\n [formulaName, formula, groupProperties, setFormulaErrorMessage, propertyMap, providedDataType],\n );\n return {\n isFormulaValid,\n inferredDataType,\n forceValidation: () => validate(formulaName, formula, propertyMap, setFormulaErrorMessage, setIsFormulaValid, setDataType, providedDataType),\n };\n}\n\nexport const inferToPropertyDataType = (value: FormulaDataType | undefined): DataType => {\n switch (value) {\n case \"Double\":\n return DataType.Double;\n case \"Integer\":\n return DataType.Integer;\n case \"String\":\n return DataType.String;\n case \"Boolean\":\n return DataType.Boolean;\n default:\n return DataType.String;\n }\n};\n\nconst convertToPropertyMap = (properties: Property[], selectedPropertyName?: string): PropertyMap => {\n const map: PropertyMap = {};\n const selectedLowerName = selectedPropertyName?.toLowerCase();\n\n properties.forEach((p) => {\n const lowerName = p.propertyName?.toLowerCase();\n if (lowerName && lowerName !== selectedLowerName) map[lowerName] = stringToPossibleDataType(p.dataType);\n });\n\n return map;\n};\n\nconst stringToPossibleDataType = (str?: string): PossibleDataType => {\n switch (str?.toLowerCase()) {\n case \"double\":\n return \"Double\";\n case \"integer\":\n return \"Integer\";\n case \"string\":\n return \"String\";\n case \"boolean\":\n return \"Boolean\";\n default:\n return \"Undefined\";\n }\n};\n"]}
@@ -0,0 +1,3 @@
1
+ import type { ForwardedRef } from "react";
2
+ export declare const useForwardRef: <T>(ref: ForwardedRef<T>, initialValue?: any) => import("react").MutableRefObject<T>;
3
+ //# sourceMappingURL=useForwardRef.d.ts.map
@@ -0,0 +1,16 @@
1
+ import { useEffect, useRef } from "react";
2
+ export const useForwardRef = (ref, initialValue = null) => {
3
+ const targetRef = useRef(initialValue);
4
+ useEffect(() => {
5
+ if (!ref)
6
+ return;
7
+ if (typeof ref === 'function') {
8
+ ref(targetRef.current);
9
+ }
10
+ else {
11
+ ref.current = targetRef.current;
12
+ }
13
+ }, [ref]);
14
+ return targetRef;
15
+ };
16
+ //# sourceMappingURL=useForwardRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useForwardRef.js","sourceRoot":"","sources":["../../../../../src/components/Properties/hooks/useForwardRef.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,GAAoB,EACpB,eAAoB,IAAI,EACxB,EAAE;IACF,MAAM,SAAS,GAAG,MAAM,CAAI,YAAY,CAAC,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG;YAAE,OAAO;QAEjB,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;YAC7B,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SACxB;aAAM;YACL,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;SACjC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO,SAAS,CAAC;AACnB,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 { ForwardedRef } from \"react\";\nimport { useEffect, useRef } from \"react\";\n\nexport const useForwardRef = <T,>(\n ref: ForwardedRef<T>,\n initialValue: any = null\n ) => {\n const targetRef = useRef<T>(initialValue);\n \n useEffect(() => {\n if (!ref) return;\n \n if (typeof ref === 'function') {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }, [ref]);\n \n return targetRef;\n };"]}
@@ -2,11 +2,13 @@
2
2
  import "./ActionPanel.scss";
3
3
  export interface ActionPanelProps {
4
4
  onSave: () => void;
5
+ onSaveCapture?: () => void;
5
6
  onCancel?: () => void;
7
+ onCancelCapture?: () => void;
6
8
  isCancelDisabled?: boolean;
7
9
  isSavingDisabled?: boolean;
8
10
  isLoading?: boolean;
9
11
  }
10
- declare const ActionPanel: ({ onSave, onCancel, isCancelDisabled, isSavingDisabled, isLoading }: ActionPanelProps) => JSX.Element;
12
+ declare const ActionPanel: ({ onSave, onSaveCapture, onCancel, onCancelCapture, isCancelDisabled, isSavingDisabled, isLoading }: ActionPanelProps) => JSX.Element;
11
13
  export default ActionPanel;
12
14
  //# sourceMappingURL=ActionPanel.d.ts.map
@@ -6,12 +6,12 @@ import { Button } from "@itwin/itwinui-react";
6
6
  import * as React from "react";
7
7
  import "./ActionPanel.scss";
8
8
  import { LoadingSpinner } from "./LoadingSpinner";
9
- const ActionPanel = ({ onSave, onCancel, isCancelDisabled = false, isSavingDisabled = false, isLoading = false }) => {
9
+ const ActionPanel = ({ onSave, onSaveCapture, onCancel, onCancelCapture, isCancelDisabled = false, isSavingDisabled = false, isLoading = false }) => {
10
10
  return (React.createElement("div", { id: "action", className: "gmw-action-panel-container" },
11
11
  React.createElement("div", { className: "gmw-action-panel" },
12
12
  isLoading && React.createElement(LoadingSpinner, null),
13
- React.createElement(Button, { disabled: isSavingDisabled || isLoading, styleType: "high-visibility", id: "save-app", onClick: onSave }, "Save"),
14
- onCancel && (React.createElement(Button, { styleType: "default", type: "button", id: "cancel", onClick: onCancel, disabled: isCancelDisabled || isLoading }, "Cancel")))));
13
+ React.createElement(Button, { disabled: isSavingDisabled || isLoading, styleType: "high-visibility", id: "save-app", onClick: onSave, onClickCapture: onSaveCapture }, "Save"),
14
+ onCancel && (React.createElement(Button, { styleType: "default", type: "button", id: "cancel", onClick: onCancel, disabled: isCancelDisabled || isLoading, onClickCapture: onCancelCapture }, "Cancel")))));
15
15
  };
16
16
  export default ActionPanel;
17
17
  //# sourceMappingURL=ActionPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/components/SharedComponents/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAUlD,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAoB,EAAe,EAAE;IACjJ,OAAO,CACL,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,4BAA4B;QACrD,6BAAK,SAAS,EAAC,kBAAkB;YAC9B,SAAS,IAAI,oBAAC,cAAc,OAAG;YAChC,oBAAC,MAAM,IAAC,QAAQ,EAAE,gBAAgB,IAAI,SAAS,EAAE,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAC,UAAU,EAAC,OAAO,EAAE,MAAM,WAEjG;YACR,QAAQ,IAAI,CACX,oBAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,QAAQ,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,IAAI,SAAS,aAEvG,CACV,CACG,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 { Button } from \"@itwin/itwinui-react\";\nimport * as React from \"react\";\nimport \"./ActionPanel.scss\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\n\nexport interface ActionPanelProps {\n onSave: () => void;\n onCancel?: () => void;\n isCancelDisabled?: boolean;\n isSavingDisabled?: boolean;\n isLoading?: boolean;\n}\n\nconst ActionPanel = ({ onSave, onCancel, isCancelDisabled = false, isSavingDisabled = false, isLoading = false }: ActionPanelProps): JSX.Element => {\n return (\n <div id=\"action\" className=\"gmw-action-panel-container\">\n <div className=\"gmw-action-panel\">\n {isLoading && <LoadingSpinner />}\n <Button disabled={isSavingDisabled || isLoading} styleType=\"high-visibility\" id=\"save-app\" onClick={onSave}>\n Save\n </Button>\n {onCancel && (\n <Button styleType=\"default\" type=\"button\" id=\"cancel\" onClick={onCancel} disabled={isCancelDisabled || isLoading}>\n Cancel\n </Button>\n )}\n </div>\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
1
+ {"version":3,"file":"ActionPanel.js","sourceRoot":"","sources":["../../../../src/components/SharedComponents/ActionPanel.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAYlD,MAAM,WAAW,GAAG,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,GAAG,KAAK,EAAE,gBAAgB,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,EAAoB,EAAe,EAAE;IACjL,OAAO,CACL,6BAAK,EAAE,EAAC,QAAQ,EAAC,SAAS,EAAC,4BAA4B;QACrD,6BAAK,SAAS,EAAC,kBAAkB;YAC9B,SAAS,IAAI,oBAAC,cAAc,OAAG;YAChC,oBAAC,MAAM,IAAC,QAAQ,EAAE,gBAAgB,IAAI,SAAS,EAAE,SAAS,EAAC,iBAAiB,EAAC,EAAE,EAAC,UAAU,EAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,WAEhI;YACR,QAAQ,IAAI,CACX,oBAAC,MAAM,IAAC,SAAS,EAAC,SAAS,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAE,EAAC,QAAQ,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,IAAI,SAAS,EAAE,cAAc,EAAE,eAAe,aAExI,CACV,CACG,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,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 { Button } from \"@itwin/itwinui-react\";\nimport * as React from \"react\";\nimport \"./ActionPanel.scss\";\nimport { LoadingSpinner } from \"./LoadingSpinner\";\n\nexport interface ActionPanelProps {\n onSave: () => void;\n onSaveCapture?: () => void;\n onCancel?: () => void;\n onCancelCapture?: () => void;\n isCancelDisabled?: boolean;\n isSavingDisabled?: boolean;\n isLoading?: boolean;\n}\n\nconst ActionPanel = ({ onSave, onSaveCapture, onCancel, onCancelCapture, isCancelDisabled = false, isSavingDisabled = false, isLoading = false }: ActionPanelProps): JSX.Element => {\n return (\n <div id=\"action\" className=\"gmw-action-panel-container\">\n <div className=\"gmw-action-panel\">\n {isLoading && <LoadingSpinner />}\n <Button disabled={isSavingDisabled || isLoading} styleType=\"high-visibility\" id=\"save-app\" onClick={onSave} onClickCapture={onSaveCapture}>\n Save\n </Button>\n {onCancel && (\n <Button styleType=\"default\" type=\"button\" id=\"cancel\" onClick={onCancel} disabled={isCancelDisabled || isLoading} onClickCapture={onCancelCapture}>\n Cancel\n </Button>\n )}\n </div>\n </div>\n );\n};\n\nexport default ActionPanel;\n"]}
@@ -1,5 +1,6 @@
1
+ import type { DataType } from "@itwin/insights-client";
1
2
  import type { IResult } from "./IResult";
2
- import type { DataType, PropertyMap } from "./Types";
3
+ import type { DataType as FormulaDataType, PropertyMap } from "./Types";
3
4
  /**
4
5
  * Resolves DataType of the given formula.
5
6
  * @param formulaName Name of the current formula. Expected to be lowercase.
@@ -9,5 +10,5 @@ import type { DataType, PropertyMap } from "./Types";
9
10
  * @returns `dataType` if formula is valid. `errorMessage` otherwise.
10
11
  * @public
11
12
  */
12
- export declare function resolveFormulaDataType(formulaName: string, formula: string, properties: PropertyMap): IResult<DataType>;
13
+ export declare function resolveFormulaDataType(formulaName: string, formula: string, properties: PropertyMap, providedDataType?: DataType): IResult<FormulaDataType>;
13
14
  //# sourceMappingURL=FormulaDataTypeResolver.d.ts.map