@itwin/grouping-mapping-widget 0.30.0 → 0.31.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 (61) hide show
  1. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js +3 -1
  2. package/lib/cjs/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  3. package/lib/cjs/components/GroupingMappingContext.js +5 -0
  4. package/lib/cjs/components/GroupingMappingContext.js.map +1 -1
  5. package/lib/cjs/components/Groups/GroupColorLegend.d.ts +2 -4
  6. package/lib/cjs/components/Groups/GroupColorLegend.js +2 -3
  7. package/lib/cjs/components/Groups/GroupColorLegend.js.map +1 -1
  8. package/lib/cjs/components/Groups/GroupsVisualization.d.ts +2 -1
  9. package/lib/cjs/components/Groups/GroupsVisualization.js +10 -5
  10. package/lib/cjs/components/Groups/GroupsVisualization.js.map +1 -1
  11. package/lib/cjs/components/Properties/GroupColorToggle.d.ts +2 -1
  12. package/lib/cjs/components/Properties/GroupColorToggle.js +11 -2
  13. package/lib/cjs/components/Properties/GroupColorToggle.js.map +1 -1
  14. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js +5 -3
  15. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  16. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.d.ts +2 -1
  17. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js +2 -2
  18. package/lib/cjs/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  19. package/lib/cjs/components/Properties/PropertyMenu.d.ts +2 -1
  20. package/lib/cjs/components/Properties/PropertyMenu.js +2 -2
  21. package/lib/cjs/components/Properties/PropertyMenu.js.map +1 -1
  22. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.d.ts +3 -1
  23. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js +2 -2
  24. package/lib/cjs/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  25. package/lib/cjs/components/Properties/PropertyTable.d.ts +2 -1
  26. package/lib/cjs/components/Properties/PropertyTable.js +3 -2
  27. package/lib/cjs/components/Properties/PropertyTable.js.map +1 -1
  28. package/lib/cjs/components/context/GroupHilitedElementsContext.d.ts +2 -0
  29. package/lib/cjs/components/context/GroupHilitedElementsContext.js +2 -0
  30. package/lib/cjs/components/context/GroupHilitedElementsContext.js.map +1 -1
  31. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js +3 -1
  32. package/lib/esm/WidgetShell/Router/GroupingMappingRouter.js.map +1 -1
  33. package/lib/esm/components/GroupingMappingContext.js +5 -0
  34. package/lib/esm/components/GroupingMappingContext.js.map +1 -1
  35. package/lib/esm/components/Groups/GroupColorLegend.d.ts +2 -4
  36. package/lib/esm/components/Groups/GroupColorLegend.js +2 -3
  37. package/lib/esm/components/Groups/GroupColorLegend.js.map +1 -1
  38. package/lib/esm/components/Groups/GroupsVisualization.d.ts +2 -1
  39. package/lib/esm/components/Groups/GroupsVisualization.js +11 -6
  40. package/lib/esm/components/Groups/GroupsVisualization.js.map +1 -1
  41. package/lib/esm/components/Properties/GroupColorToggle.d.ts +2 -1
  42. package/lib/esm/components/Properties/GroupColorToggle.js +11 -2
  43. package/lib/esm/components/Properties/GroupColorToggle.js.map +1 -1
  44. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js +5 -3
  45. package/lib/esm/components/Properties/GroupProperties/GroupPropertyAction.js.map +1 -1
  46. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.d.ts +2 -1
  47. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js +2 -2
  48. package/lib/esm/components/Properties/GroupProperties/GroupPropertyTable.js.map +1 -1
  49. package/lib/esm/components/Properties/PropertyMenu.d.ts +2 -1
  50. package/lib/esm/components/Properties/PropertyMenu.js +2 -2
  51. package/lib/esm/components/Properties/PropertyMenu.js.map +1 -1
  52. package/lib/esm/components/Properties/PropertyMenuWithVisualization.d.ts +3 -1
  53. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js +2 -2
  54. package/lib/esm/components/Properties/PropertyMenuWithVisualization.js.map +1 -1
  55. package/lib/esm/components/Properties/PropertyTable.d.ts +2 -1
  56. package/lib/esm/components/Properties/PropertyTable.js +3 -2
  57. package/lib/esm/components/Properties/PropertyTable.js.map +1 -1
  58. package/lib/esm/components/context/GroupHilitedElementsContext.d.ts +2 -0
  59. package/lib/esm/components/context/GroupHilitedElementsContext.js +2 -0
  60. package/lib/esm/components/context/GroupHilitedElementsContext.js.map +1 -1
  61. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"GroupPropertyAction.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyAction.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 { PropertyValueFormat } from \"@itwin/presentation-common\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Alert, Button, Fieldset, Icon, LabeledInput, LabeledSelect, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ActionPanel from \"../../SharedComponents/ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { DataType, QuantityType } from \"@itwin/insights-client\";\nimport type { CalculatedPropertyType, GroupMinimal, Property, PropertyModify } from \"@itwin/insights-client\";\nimport \"./GroupPropertyAction.scss\";\nimport type { PropertyMetaData } from \"./GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties } from \"./GroupPropertyUtils\";\nimport { clearAll, manufactureKeys } from \"../../../common/viewerUtils\";\nimport { SaveModal } from \"./SaveModal\";\nimport { GroupsPropertiesSelectionModal } from \"./GroupsPropertiesSelectionModal\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { GroupPropertyListItem } from \"./GroupPropertyListItem\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\nimport { SvgFunction, SvgLabel, SvgMeasure } from \"@itwin/itwinui-icons-react\";\nimport { CalculatedPropertyActionWithVisuals } from \"../CalculatedProperties/CalculatedPropertyActionWithVisuals\";\nimport { handleError } from \"../../../common/utils\";\nimport { CustomCalculationAction } from \"../CustomCalculations/CustomCalculationAction\";\nimport { usePropertiesQuery } from \"../hooks/usePropertiesQuery\";\nimport { useFormulaValidation } from \"../hooks/useFormulaValidation\";\nimport { ScrollableExpandableBlock } from \"../ScrollableExpandableBlock\";\n\n/**\n * Props for the {@link GroupPropertyAction} component.\n * @public\n */\nexport interface GroupPropertyActionProps {\n mappingId: string;\n group: GroupMinimal;\n groupProperty?: Property;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n}\n\nexport const quantityTypesSelectionOptions: SelectOption<QuantityType | undefined>[] = [\n { value: QuantityType.Area, label: \"Area\" },\n { value: QuantityType.Distance, label: \"Distance\" },\n { value: QuantityType.Force, label: \"Force\" },\n { value: QuantityType.Mass, label: \"Mass\" },\n { value: QuantityType.Monetary, label: \"Monetary\" },\n { value: QuantityType.Time, label: \"Time\" },\n { value: QuantityType.Volume, label: \"Volume\" },\n { value: undefined, label: \"No Quantity Type\" },\n];\n\n/**\n * Component to create or update a group.\n * @public\n */\nexport const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel }: GroupPropertyActionProps) => {\n const actionContainerRef = useRef<HTMLDivElement>(null);\n const calculatedPropertyActionRef = useRef<HTMLDivElement>(null);\n const customCalculationActionRef = useRef<HTMLDivElement>(null);\n const propertiesClient = usePropertiesClient();\n const queryClient = useQueryClient();\n\n const [propertyName, setPropertyName] = useState<string>(\"\");\n const [oldPropertyName, setOldPropertyName] = useState<string>(\"\");\n const [dataType, setDataType] = useState<DataType>(groupProperty?.dataType ?? DataType.String);\n const [quantityType, setQuantityType] = useState<QuantityType | undefined>(groupProperty?.quantityType ?? undefined);\n const [selectedProperties, setSelectedProperties] = useState<PropertyMetaData[]>([]);\n const [propertiesMetaData, setPropertiesMetaData] = useState<PropertyMetaData[]>([]);\n const [propertiesNotFoundAlert, setPropertiesNotFoundAlert] = useState<boolean>(false);\n const [validator, showValidationMessage] = useValidator();\n const [showPropertiesSelectionModal, setShowPropertiesSelectionModal] = useState<boolean>(false);\n const [showSaveConfirmationModal, setShowSaveConfirmationModal] = useState<boolean>(false);\n const [calculatedPropertyType, setCalculatedPropertyType] = useState<CalculatedPropertyType | undefined>(groupProperty?.calculatedPropertyType ?? undefined);\n const [isCalculatedBlockExpanded, setIsCalculatedBlockExpanded] = useState<boolean>(!!calculatedPropertyType);\n const [formula, setFormula] = useState<string | undefined>(groupProperty?.formula ?? undefined);\n const [formulaErrorMessage, setFormulaErrorMessage] = useState<string | undefined>(undefined);\n\n const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();\n const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, group.id, getAccessToken, propertiesClient);\n const { forceValidation } = useFormulaValidation(propertyName.toLowerCase(), formula, groupProperties?.properties ?? [], setFormulaErrorMessage, dataType);\n\n const reset = useCallback(() => {\n setPropertyName(\"\");\n setDataType(DataType.String);\n setQuantityType(undefined);\n setSelectedProperties([]);\n setCalculatedPropertyType(undefined);\n setFormula(undefined);\n }, []);\n\n const fetchPropertiesMetadata = useCallback(async () => {\n if (!iModelConnection) return;\n\n const result = await manufactureKeys(group.query, iModelConnection);\n const descriptor = await fetchPresentationDescriptor(iModelConnection, result);\n\n // Only allow primitives and structs\n const propertyFields =\n descriptor?.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive || field.type.valueFormat === PropertyValueFormat.Struct) ??\n [];\n\n const propertiesMetaData = convertPresentationFields(propertyFields);\n\n let groupPropertyDetails = null;\n if (groupProperty) {\n const accessToken = await getAccessToken();\n groupPropertyDetails = await propertiesClient.getProperty(accessToken, mappingId, group.id, groupProperty.id);\n }\n\n return { propertiesMetaData, groupPropertyDetails };\n }, [getAccessToken, group.id, group.query, groupProperty, iModelConnection, mappingId, propertiesClient]);\n\n const scrollToFormulaErrorMessage = useCallback(() => {\n setTimeout(() => {\n if (actionContainerRef.current && customCalculationActionRef.current) {\n actionContainerRef.current.scrollTo({\n top: customCalculationActionRef.current.offsetTop,\n behavior: \"smooth\",\n });\n }\n }, 500);\n }, [actionContainerRef]);\n\n const {\n data,\n isFetching: isLoadingProperties,\n isSuccess: isLoadingPropertiesSuccessful,\n } = useQuery([\"properties\", iModelId, mappingId, group.id, groupProperty?.id, \"metadata\"], fetchPropertiesMetadata);\n\n useEffect(() => {\n if (isLoadingPropertiesSuccessful && data?.propertiesMetaData) {\n setPropertiesMetaData(data.propertiesMetaData);\n\n if (data.groupPropertyDetails) {\n setPropertyName(data.groupPropertyDetails.propertyName);\n setOldPropertyName(data.groupPropertyDetails.propertyName);\n setDataType(data.groupPropertyDetails.dataType);\n if (data.groupPropertyDetails.quantityType) setQuantityType(data.groupPropertyDetails.quantityType);\n\n if (data.groupPropertyDetails.ecProperties) {\n const properties = findProperties(data.groupPropertyDetails.ecProperties, data.propertiesMetaData);\n if (properties.length === 0) {\n setPropertiesNotFoundAlert(true);\n }\n setSelectedProperties(properties);\n }\n }\n }\n }, [data, isLoadingPropertiesSuccessful]);\n\n useEffect(() => {\n if (calculatedPropertyType) {\n setDataType(DataType.Double);\n }\n\n if (isCalculatedBlockExpanded === false || !calculatedPropertyType) {\n clearAll();\n }\n }, [calculatedPropertyType, isCalculatedBlockExpanded]);\n\n useEffect(() => {\n if (formulaErrorMessage) {\n scrollToFormulaErrorMessage();\n }\n }, [formulaErrorMessage, scrollToFormulaErrorMessage]);\n\n const { mutate: onSave, isLoading: isSaving } = useMutation({\n mutationFn: async () => {\n const accessToken = await getAccessToken();\n const newGroupProperty: PropertyModify = {\n propertyName,\n dataType,\n quantityType,\n ecProperties: selectedProperties.length > 0 ? selectedProperties.map((p) => convertToECProperties(p)).flat() : undefined,\n calculatedPropertyType,\n formula,\n };\n\n return groupProperty\n ? propertiesClient.updateProperty(accessToken, mappingId, group.id, groupProperty.id, newGroupProperty)\n : propertiesClient.createProperty(accessToken, mappingId, group.id, newGroupProperty);\n },\n onSuccess: async () => {\n onSaveSuccess();\n reset();\n await queryClient.invalidateQueries([\"properties\", iModelId, mappingId, group.id]);\n },\n onError(error: any) {\n handleError(error.status);\n },\n });\n\n const handleSaveClick = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n if (oldPropertyName !== propertyName && oldPropertyName !== \"\") {\n setShowSaveConfirmationModal(true);\n } else {\n onSave();\n }\n };\n\n const handleCloseSaveModal = () => {\n setShowSaveConfirmationModal(false);\n };\n\n const isLoading = isLoadingProperties || isSaving || isLoadingGroupProperties;\n\n return (\n <>\n <div className=\"gmw-group-property-action-container\" ref={actionContainerRef}>\n <Fieldset disabled={isLoading} className=\"gmw-property-options\" legend=\"Property Details\">\n <Text variant=\"small\" as=\"small\" className=\"gmw-field-legend\">\n Asterisk * indicates mandatory fields.\n </Text>\n <LabeledInput\n id=\"propertyName\"\n label=\"Property Name\"\n value={propertyName}\n required\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"propertyName\");\n }}\n message={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS)}\n status={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS) ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"propertyName\");\n }}\n />\n <LabeledSelect<DataType>\n label={\"Data Type\"}\n id=\"dataType\"\n options={[\n { value: DataType.Boolean, label: \"Boolean\" },\n { value: DataType.Integer, label: \"Integer\" },\n { value: DataType.Double, label: \"Double\" },\n { value: DataType.String, label: \"String\" },\n ]}\n required\n value={calculatedPropertyType ? DataType.Double : dataType}\n onChange={(value) => {\n validator.showMessageFor(\"dataType\");\n setDataType(value);\n }}\n message={validator.message(\"dataType\", propertyName, \"required\")}\n status={validator.message(\"dataType\", propertyName, \"required\") ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"dataType\");\n }}\n disabled={calculatedPropertyType ? true : false}\n onShow={() => {}}\n onHide={() => {}}\n />\n <LabeledSelect<QuantityType | undefined>\n label=\"Quantity Type\"\n options={quantityTypesSelectionOptions}\n value={quantityType}\n onChange={setQuantityType}\n onShow={() => {}}\n onHide={() => {}}\n placeholder=\"No Quantity Type\"\n />\n </Fieldset>\n {propertiesNotFoundAlert && (\n <Alert type=\"warning\">\n Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new\n selection is made and saved.\n </Alert>\n )}\n <ScrollableExpandableBlock\n title={\"Mapped Properties\"}\n endIcon={\n <Icon fill={selectedProperties.length > 0 ? \"informational\" : \"default\"}>\n <SvgLabel />\n </Icon>\n }\n isExpanded={selectedProperties.length > 0}\n setIsExpanded={() => {}}\n >\n <div className=\"gmw-property-view-container\">\n <div className=\"gmw-property-view-button\">\n <Button onClick={async () => setShowPropertiesSelectionModal(true)} disabled={isLoading}>\n Select Properties\n </Button>\n </div>\n <div className=\"gmw-properties-list\">\n {selectedProperties.length === 0 && !isLoading ? (\n <div className=\"gmw-empty-selection\">\n <Text>No properties selected.</Text>\n <Text>Press the &quot;Select Properties&quot; button for options.</Text>\n </div>\n ) : (\n selectedProperties.map((property) => (\n <GroupPropertyListItem\n key={property.key}\n content={`${property.displayLabel}`}\n title={`${property.actualECClassName}`}\n description={property.categoryLabel}\n />\n ))\n )}\n </div>\n </div>\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={calculatedPropertyActionRef}\n title={\"Calculated Property\"}\n endIcon={\n <Icon fill={calculatedPropertyType ? \"informational\" : \"default\"}>\n <SvgMeasure />\n </Icon>\n }\n isExpanded={!!calculatedPropertyType}\n setIsExpanded={setIsCalculatedBlockExpanded}\n >\n <CalculatedPropertyActionWithVisuals\n group={group}\n calculatedPropertyType={calculatedPropertyType}\n setCalculatedPropertyType={setCalculatedPropertyType}\n />\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={customCalculationActionRef}\n title={\"Custom Calculation\"}\n endIcon={\n <Icon fill={formula ? \"informational\" : \"default\"}>\n <SvgFunction />\n </Icon>\n }\n isExpanded={formula !== undefined}\n setIsExpanded={() => {}}\n >\n <CustomCalculationAction\n formula={formula}\n setFormula={setFormula}\n formulaErrorMessage={formulaErrorMessage}\n forceValidation={forceValidation}\n disabled={isLoading}\n />\n </ScrollableExpandableBlock>\n </div>\n <ActionPanel\n onSave={handleSaveClick}\n onCancel={onClickCancel}\n onSaveCapture={clearAll}\n onCancelCapture={clearAll}\n isLoading={isLoading}\n isSavingDisabled={!propertyName || dataType === undefined || formulaErrorMessage !== undefined}\n />\n <GroupsPropertiesSelectionModal\n showModal={showPropertiesSelectionModal}\n setShowModal={setShowPropertiesSelectionModal}\n selectedProperties={selectedProperties}\n setSelectedProperties={setSelectedProperties}\n propertiesMetaData={propertiesMetaData}\n />\n <SaveModal onSave={onSave} onClose={handleCloseSaveModal} showSaveModal={showSaveConfirmationModal} />\n </>\n );\n};\n"]}
1
+ {"version":3,"file":"GroupPropertyAction.js","sourceRoot":"","sources":["../../../../../src/components/Properties/GroupProperties/GroupPropertyAction.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 { PropertyValueFormat } from \"@itwin/presentation-common\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Alert, Button, Fieldset, Icon, LabeledInput, LabeledSelect, Text } from \"@itwin/itwinui-react\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport ActionPanel from \"../../SharedComponents/ActionPanel\";\nimport useValidator, { NAME_REQUIREMENTS } from \"../hooks/useValidator\";\nimport { useGroupingMappingApiConfig } from \"../../context/GroupingApiConfigContext\";\nimport { DataType, QuantityType } from \"@itwin/insights-client\";\nimport type { CalculatedPropertyType, GroupMinimal, Property, PropertyModify } from \"@itwin/insights-client\";\nimport \"./GroupPropertyAction.scss\";\nimport type { PropertyMetaData } from \"./GroupPropertyUtils\";\nimport { convertPresentationFields, convertToECProperties, fetchPresentationDescriptor, findProperties } from \"./GroupPropertyUtils\";\nimport { clearAll, manufactureKeys } from \"../../../common/viewerUtils\";\nimport { SaveModal } from \"./SaveModal\";\nimport { GroupsPropertiesSelectionModal } from \"./GroupsPropertiesSelectionModal\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { GroupPropertyListItem } from \"./GroupPropertyListItem\";\nimport { usePropertiesClient } from \"../../context/PropertiesClientContext\";\nimport { SvgFunction, SvgLabel, SvgMeasure } from \"@itwin/itwinui-icons-react\";\nimport { CalculatedPropertyActionWithVisuals } from \"../CalculatedProperties/CalculatedPropertyActionWithVisuals\";\nimport { handleError } from \"../../../common/utils\";\nimport { CustomCalculationAction } from \"../CustomCalculations/CustomCalculationAction\";\nimport { usePropertiesQuery } from \"../hooks/usePropertiesQuery\";\nimport { useFormulaValidation } from \"../hooks/useFormulaValidation\";\nimport { ScrollableExpandableBlock } from \"../ScrollableExpandableBlock\";\n\n/**\n * Props for the {@link GroupPropertyAction} component.\n * @public\n */\nexport interface GroupPropertyActionProps {\n mappingId: string;\n group: GroupMinimal;\n groupProperty?: Property;\n onSaveSuccess: () => void;\n onClickCancel?: () => void;\n}\n\nexport const quantityTypesSelectionOptions: SelectOption<QuantityType | undefined>[] = [\n { value: QuantityType.Area, label: \"Area\" },\n { value: QuantityType.Distance, label: \"Distance\" },\n { value: QuantityType.Force, label: \"Force\" },\n { value: QuantityType.Mass, label: \"Mass\" },\n { value: QuantityType.Monetary, label: \"Monetary\" },\n { value: QuantityType.Time, label: \"Time\" },\n { value: QuantityType.Volume, label: \"Volume\" },\n { value: undefined, label: \"No Quantity Type\" },\n];\n\n/**\n * Component to create or update a group.\n * @public\n */\nexport const GroupPropertyAction = ({ mappingId, group, groupProperty, onSaveSuccess, onClickCancel }: GroupPropertyActionProps) => {\n const actionContainerRef = useRef<HTMLDivElement>(null);\n const calculatedPropertyActionRef = useRef<HTMLDivElement>(null);\n const customCalculationActionRef = useRef<HTMLDivElement>(null);\n const propertiesClient = usePropertiesClient();\n const queryClient = useQueryClient();\n\n const [propertyName, setPropertyName] = useState<string>(\"\");\n const [oldPropertyName, setOldPropertyName] = useState<string>(\"\");\n const [dataType, setDataType] = useState<DataType>(groupProperty?.dataType ?? DataType.String);\n const [quantityType, setQuantityType] = useState<QuantityType | undefined>(groupProperty?.quantityType ?? undefined);\n const [selectedProperties, setSelectedProperties] = useState<PropertyMetaData[]>([]);\n const [propertiesMetaData, setPropertiesMetaData] = useState<PropertyMetaData[]>([]);\n const [propertiesNotFoundAlert, setPropertiesNotFoundAlert] = useState<boolean>(false);\n const [validator, showValidationMessage] = useValidator();\n const [showPropertiesSelectionModal, setShowPropertiesSelectionModal] = useState<boolean>(false);\n const [showSaveConfirmationModal, setShowSaveConfirmationModal] = useState<boolean>(false);\n const [calculatedPropertyType, setCalculatedPropertyType] = useState<CalculatedPropertyType | undefined>(groupProperty?.calculatedPropertyType ?? undefined);\n const [isCalculatedBlockExpanded, setIsCalculatedBlockExpanded] = useState<boolean>(!!calculatedPropertyType);\n const [isMappedBlockExpanded, setIsMappedBlockExpanded] = useState<boolean>((groupProperty?.ecProperties?.length ?? 0) > 0);\n const [isFormulaBlockExpanded, setIsFormulaBlockExpanded] = useState<boolean>(!!groupProperty?.formula);\n const [formula, setFormula] = useState<string | undefined>(groupProperty?.formula ?? undefined);\n const [formulaErrorMessage, setFormulaErrorMessage] = useState<string | undefined>(undefined);\n\n const { getAccessToken, iModelId, iModelConnection } = useGroupingMappingApiConfig();\n const { data: groupProperties, isFetching: isLoadingGroupProperties } = usePropertiesQuery(iModelId, mappingId, group.id, getAccessToken, propertiesClient);\n const { forceValidation } = useFormulaValidation(propertyName.toLowerCase(), formula, groupProperties?.properties ?? [], setFormulaErrorMessage, dataType);\n\n const reset = useCallback(() => {\n setPropertyName(\"\");\n setDataType(DataType.String);\n setQuantityType(undefined);\n setSelectedProperties([]);\n setCalculatedPropertyType(undefined);\n setFormula(undefined);\n }, []);\n\n const fetchPropertiesMetadata = useCallback(async () => {\n if (!iModelConnection) return;\n\n const result = await manufactureKeys(group.query, iModelConnection);\n const descriptor = await fetchPresentationDescriptor(iModelConnection, result);\n\n // Only allow primitives and structs\n const propertyFields =\n descriptor?.fields.filter((field) => field.type.valueFormat === PropertyValueFormat.Primitive || field.type.valueFormat === PropertyValueFormat.Struct) ??\n [];\n\n const propertiesMetaData = convertPresentationFields(propertyFields);\n\n let groupPropertyDetails = null;\n if (groupProperty) {\n const accessToken = await getAccessToken();\n groupPropertyDetails = await propertiesClient.getProperty(accessToken, mappingId, group.id, groupProperty.id);\n }\n\n return { propertiesMetaData, groupPropertyDetails };\n }, [getAccessToken, group.id, group.query, groupProperty, iModelConnection, mappingId, propertiesClient]);\n\n const scrollToFormulaErrorMessage = useCallback(() => {\n setTimeout(() => {\n if (actionContainerRef.current && customCalculationActionRef.current) {\n actionContainerRef.current.scrollTo({\n top: customCalculationActionRef.current.offsetTop,\n behavior: \"smooth\",\n });\n }\n }, 500);\n }, [actionContainerRef]);\n\n const {\n data,\n isFetching: isLoadingProperties,\n isSuccess: isLoadingPropertiesSuccessful,\n } = useQuery([\"properties\", iModelId, mappingId, group.id, groupProperty?.id, \"metadata\"], fetchPropertiesMetadata);\n\n useEffect(() => {\n if (isLoadingPropertiesSuccessful && data?.propertiesMetaData) {\n setPropertiesMetaData(data.propertiesMetaData);\n\n if (data.groupPropertyDetails) {\n setPropertyName(data.groupPropertyDetails.propertyName);\n setOldPropertyName(data.groupPropertyDetails.propertyName);\n setDataType(data.groupPropertyDetails.dataType);\n if (data.groupPropertyDetails.quantityType) setQuantityType(data.groupPropertyDetails.quantityType);\n\n if (data.groupPropertyDetails.ecProperties) {\n const properties = findProperties(data.groupPropertyDetails.ecProperties, data.propertiesMetaData);\n if (properties.length === 0) {\n setPropertiesNotFoundAlert(true);\n }\n setSelectedProperties(properties);\n }\n }\n }\n }, [data, isLoadingPropertiesSuccessful]);\n\n useEffect(() => {\n if (calculatedPropertyType) {\n setDataType(DataType.Double);\n }\n\n if (isCalculatedBlockExpanded === false || !calculatedPropertyType) {\n clearAll();\n }\n }, [calculatedPropertyType, isCalculatedBlockExpanded]);\n\n useEffect(() => {\n if (formulaErrorMessage) {\n scrollToFormulaErrorMessage();\n }\n }, [formulaErrorMessage, scrollToFormulaErrorMessage]);\n\n const { mutate: onSave, isLoading: isSaving } = useMutation({\n mutationFn: async () => {\n const accessToken = await getAccessToken();\n const newGroupProperty: PropertyModify = {\n propertyName,\n dataType,\n quantityType,\n ecProperties: selectedProperties.length > 0 ? selectedProperties.map((p) => convertToECProperties(p)).flat() : undefined,\n calculatedPropertyType,\n formula,\n };\n\n return groupProperty\n ? propertiesClient.updateProperty(accessToken, mappingId, group.id, groupProperty.id, newGroupProperty)\n : propertiesClient.createProperty(accessToken, mappingId, group.id, newGroupProperty);\n },\n onSuccess: async () => {\n onSaveSuccess();\n reset();\n await queryClient.invalidateQueries([\"properties\", iModelId, mappingId, group.id]);\n },\n onError(error: any) {\n handleError(error.status);\n },\n });\n\n const handleSaveClick = async () => {\n if (!validator.allValid()) {\n showValidationMessage(true);\n return;\n }\n if (oldPropertyName !== propertyName && oldPropertyName !== \"\") {\n setShowSaveConfirmationModal(true);\n } else {\n onSave();\n }\n };\n\n const handleCloseSaveModal = () => {\n setShowSaveConfirmationModal(false);\n };\n\n const isLoading = isLoadingProperties || isSaving || isLoadingGroupProperties;\n\n return (\n <>\n <div className=\"gmw-group-property-action-container\" ref={actionContainerRef}>\n <Fieldset disabled={isLoading} className=\"gmw-property-options\" legend=\"Property Details\">\n <Text variant=\"small\" as=\"small\" className=\"gmw-field-legend\">\n Asterisk * indicates mandatory fields.\n </Text>\n <LabeledInput\n id=\"propertyName\"\n label=\"Property Name\"\n value={propertyName}\n required\n onChange={(event) => {\n setPropertyName(event.target.value);\n validator.showMessageFor(\"propertyName\");\n }}\n message={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS)}\n status={validator.message(\"propertyName\", propertyName, NAME_REQUIREMENTS) ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"propertyName\");\n }}\n />\n <LabeledSelect<DataType>\n label={\"Data Type\"}\n id=\"dataType\"\n options={[\n { value: DataType.Boolean, label: \"Boolean\" },\n { value: DataType.Integer, label: \"Integer\" },\n { value: DataType.Double, label: \"Double\" },\n { value: DataType.String, label: \"String\" },\n ]}\n required\n value={calculatedPropertyType ? DataType.Double : dataType}\n onChange={(value) => {\n validator.showMessageFor(\"dataType\");\n setDataType(value);\n }}\n message={validator.message(\"dataType\", propertyName, \"required\")}\n status={validator.message(\"dataType\", propertyName, \"required\") ? \"negative\" : undefined}\n onBlur={() => {\n validator.showMessageFor(\"dataType\");\n }}\n disabled={calculatedPropertyType ? true : false}\n onShow={() => {}}\n onHide={() => {}}\n />\n <LabeledSelect<QuantityType | undefined>\n label=\"Quantity Type\"\n options={quantityTypesSelectionOptions}\n value={quantityType}\n onChange={setQuantityType}\n onShow={() => {}}\n onHide={() => {}}\n placeholder=\"No Quantity Type\"\n />\n </Fieldset>\n {propertiesNotFoundAlert && (\n <Alert type=\"warning\">\n Warning: Could not match saved properties from the current generated list. It does not confirm or deny validity. Overwriting will occur if a new\n selection is made and saved.\n </Alert>\n )}\n <ScrollableExpandableBlock\n title={\"Mapped Properties\"}\n endIcon={\n <Icon fill={selectedProperties.length > 0 ? \"informational\" : \"default\"}>\n <SvgLabel />\n </Icon>\n }\n isExpanded={isMappedBlockExpanded}\n setIsExpanded={setIsMappedBlockExpanded}\n >\n <div className=\"gmw-property-view-container\">\n <div className=\"gmw-property-view-button\">\n <Button onClick={async () => setShowPropertiesSelectionModal(true)} disabled={isLoading}>\n Select Properties\n </Button>\n </div>\n <div className=\"gmw-properties-list\">\n {selectedProperties.length === 0 && !isLoading ? (\n <div className=\"gmw-empty-selection\">\n <Text>No properties selected.</Text>\n <Text>Press the &quot;Select Properties&quot; button for options.</Text>\n </div>\n ) : (\n selectedProperties.map((property) => (\n <GroupPropertyListItem\n key={property.key}\n content={`${property.displayLabel}`}\n title={`${property.actualECClassName}`}\n description={property.categoryLabel}\n />\n ))\n )}\n </div>\n </div>\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={calculatedPropertyActionRef}\n title={\"Calculated Property\"}\n endIcon={\n <Icon fill={calculatedPropertyType ? \"informational\" : \"default\"}>\n <SvgMeasure />\n </Icon>\n }\n isExpanded={isCalculatedBlockExpanded}\n setIsExpanded={setIsCalculatedBlockExpanded}\n >\n <CalculatedPropertyActionWithVisuals\n group={group}\n calculatedPropertyType={calculatedPropertyType}\n setCalculatedPropertyType={setCalculatedPropertyType}\n />\n </ScrollableExpandableBlock>\n <ScrollableExpandableBlock\n parentRef={actionContainerRef}\n ref={customCalculationActionRef}\n title={\"Custom Calculation\"}\n endIcon={\n <Icon fill={formula ? \"informational\" : \"default\"}>\n <SvgFunction />\n </Icon>\n }\n isExpanded={isFormulaBlockExpanded}\n setIsExpanded={setIsFormulaBlockExpanded}\n >\n <CustomCalculationAction\n formula={formula}\n setFormula={setFormula}\n formulaErrorMessage={formulaErrorMessage}\n forceValidation={forceValidation}\n disabled={isLoading}\n />\n </ScrollableExpandableBlock>\n </div>\n <ActionPanel\n onSave={handleSaveClick}\n onCancel={onClickCancel}\n onSaveCapture={clearAll}\n onCancelCapture={clearAll}\n isLoading={isLoading}\n isSavingDisabled={!propertyName || dataType === undefined || formulaErrorMessage !== undefined}\n />\n <GroupsPropertiesSelectionModal\n showModal={showPropertiesSelectionModal}\n setShowModal={setShowPropertiesSelectionModal}\n selectedProperties={selectedProperties}\n setSelectedProperties={setSelectedProperties}\n propertiesMetaData={propertiesMetaData}\n />\n <SaveModal onSave={onSave} onClose={handleCloseSaveModal} showSaveModal={showSaveConfirmationModal} />\n </>\n );\n};\n"]}
@@ -10,6 +10,7 @@ export interface GroupPropertyTableProps {
10
10
  groupProperties: Property[];
11
11
  refresh: () => Promise<void>;
12
12
  hideRefreshIcon?: boolean;
13
+ onGroupPropertyDelete?: () => void;
13
14
  }
14
- export declare const GroupPropertyTable: ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, hideRefreshIcon, }: GroupPropertyTableProps) => JSX.Element;
15
+ export declare const GroupPropertyTable: ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, hideRefreshIcon, onGroupPropertyDelete, }: GroupPropertyTableProps) => JSX.Element;
15
16
  //# sourceMappingURL=GroupPropertyTable.d.ts.map
@@ -36,7 +36,7 @@ const PropertyTable_1 = require("../PropertyTable");
36
36
  const GroupingApiConfigContext_1 = require("../../context/GroupingApiConfigContext");
37
37
  const react_query_1 = require("@tanstack/react-query");
38
38
  const PropertiesClientContext_1 = require("../../context/PropertiesClientContext");
39
- const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, hideRefreshIcon, }) => {
39
+ const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isLoading, groupProperties, refresh, hideRefreshIcon, onGroupPropertyDelete, }) => {
40
40
  const propertiesClient = (0, PropertiesClientContext_1.usePropertiesClient)();
41
41
  const { getAccessToken, iModelId } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
42
42
  const queryClient = (0, react_query_1.useQueryClient)();
@@ -88,7 +88,7 @@ const GroupPropertyTable = ({ mappingId, groupId, onClickAdd, onClickModify, isL
88
88
  await queryClient.invalidateQueries({ queryKey: ["properties", iModelId, mappingId, groupId] });
89
89
  },
90
90
  });
91
- return (react_1.default.createElement(PropertyTable_1.PropertyTable, { propertyType: "Group", columnsFactory: columnsFactory, data: groupProperties, isLoading: isLoading, onClickAdd: onClickAdd, refreshProperties: refresh, deleteProperty: deleteProperty, hideRefreshIcon: hideRefreshIcon }));
91
+ return (react_1.default.createElement(PropertyTable_1.PropertyTable, { propertyType: "Group", columnsFactory: columnsFactory, data: groupProperties, isLoading: isLoading, onClickAdd: onClickAdd, refreshProperties: refresh, deleteProperty: deleteProperty, hideRefreshIcon: hideRefreshIcon, onGroupPropertyDelete: onGroupPropertyDelete }));
92
92
  };
93
93
  exports.GroupPropertyTable = GroupPropertyTable;
94
94
  //# 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, 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"]}
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 onGroupPropertyDelete?: () => void;\n}\n\nexport const GroupPropertyTable = ({\n mappingId,\n groupId,\n onClickAdd,\n onClickModify,\n isLoading,\n groupProperties,\n refresh,\n hideRefreshIcon,\n onGroupPropertyDelete,\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 onGroupPropertyDelete={onGroupPropertyDelete}\n />\n );\n};\n"]}
@@ -18,10 +18,11 @@ export interface PropertyMenuProps {
18
18
  hideCalculatedProps?: boolean;
19
19
  hideCustomCalculationProps?: boolean;
20
20
  hideRefreshIcon?: boolean;
21
+ onGroupPropertyDelete?: () => void;
21
22
  }
22
23
  /**
23
24
  * Component to display the properties of a group.
24
25
  * @public
25
26
  */
26
- export declare const PropertyMenu: ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, hideGroupProps, }: PropertyMenuProps) => JSX.Element;
27
+ export declare const PropertyMenu: ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, onGroupPropertyDelete, hideGroupProps, }: PropertyMenuProps) => JSX.Element;
27
28
  //# sourceMappingURL=PropertyMenu.d.ts.map
@@ -39,7 +39,7 @@ const PropertiesClientContext_1 = require("../context/PropertiesClientContext");
39
39
  * Component to display the properties of a group.
40
40
  * @public
41
41
  */
42
- const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, hideGroupProps = false, }) => {
42
+ const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickModifyGroupProperty, hideRefreshIcon, onGroupPropertyDelete, hideGroupProps = false, }) => {
43
43
  const groupId = group.id;
44
44
  const mappingId = mapping.id;
45
45
  const { getAccessToken, iModelId } = (0, GroupingApiConfigContext_1.useGroupingMappingApiConfig)();
@@ -47,7 +47,7 @@ const PropertyMenu = ({ mapping, group, onClickAddGroupProperty, onClickModifyGr
47
47
  const queryClient = (0, react_query_1.useQueryClient)();
48
48
  const { data: groupProperties, isFetching: isLoadingGroupProperties } = (0, usePropertiesQuery_1.usePropertiesQuery)(iModelId, mappingId, groupId, getAccessToken, propertiesClient);
49
49
  const refreshGroupProperties = (0, react_1.useCallback)(async () => queryClient.invalidateQueries({ queryKey: ["properties", iModelId, mappingId, group.id] }), [group.id, iModelId, mappingId, queryClient]);
50
- return (react_1.default.createElement("div", { className: "gmw-property-menu-wrapper" }, !hideGroupProps && (react_1.default.createElement(GroupPropertyTable_1.GroupPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddGroupProperty, onClickModify: onClickModifyGroupProperty, isLoading: isLoadingGroupProperties, groupProperties: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties, hideRefreshIcon: hideRefreshIcon }))));
50
+ return (react_1.default.createElement("div", { className: "gmw-property-menu-wrapper" }, !hideGroupProps && (react_1.default.createElement(GroupPropertyTable_1.GroupPropertyTable, { iModelId: iModelId, mappingId: mappingId, groupId: groupId, onClickAdd: onClickAddGroupProperty, onClickModify: onClickModifyGroupProperty, isLoading: isLoadingGroupProperties, groupProperties: groupProperties ? groupProperties.properties : [], refresh: refreshGroupProperties, hideRefreshIcon: hideRefreshIcon, onGroupPropertyDelete: onGroupPropertyDelete }))));
51
51
  };
52
52
  exports.PropertyMenu = PropertyMenu;
53
53
  //# sourceMappingURL=PropertyMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,+CAA2C;AAC3C,+BAA6B;AAC7B,6EAA0E;AAC1E,kFAAkF;AAElF,mEAAgE;AAChE,uDAAuD;AACvD,gFAAyE;AAqBzE;;;GAGG;AACI,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,IAAA,sDAA2B,GAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAA,6CAAmB,GAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IAErC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,wBAAwB,EAAE,GAAG,IAAA,uCAAkB,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAE3J,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EACxC,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,uCAAK,SAAS,EAAC,2BAA2B,IACvC,CAAC,cAAc,IAAI,CAClB,8BAAC,uCAAkB,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;AAtCW,QAAA,YAAY,gBAsCvB","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"]}
1
+ {"version":3,"file":"PropertyMenu.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenu.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,+CAA2C;AAC3C,+BAA6B;AAC7B,6EAA0E;AAC1E,kFAAkF;AAElF,mEAAgE;AAChE,uDAAuD;AACvD,gFAAyE;AAsBzE;;;GAGG;AACI,MAAM,YAAY,GAAG,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,eAAe,EACf,qBAAqB,EACrB,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,IAAA,sDAA2B,GAAE,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAA,6CAAmB,GAAE,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAA,4BAAc,GAAE,CAAC;IAErC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,wBAAwB,EAAE,GAAG,IAAA,uCAAkB,EAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;IAE3J,MAAM,sBAAsB,GAAG,IAAA,mBAAW,EACxC,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,uCAAK,SAAS,EAAC,2BAA2B,IACvC,CAAC,cAAc,IAAI,CAClB,8BAAC,uCAAkB,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,EAChC,qBAAqB,EAAE,qBAAqB,GAC5C,CACH,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAxCW,QAAA,YAAY,gBAwCvB","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 onGroupPropertyDelete?: () => void;\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 onGroupPropertyDelete,\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 onGroupPropertyDelete={onGroupPropertyDelete}\n />\n )}\n </div>\n );\n};\n"]}
@@ -7,10 +7,12 @@ import "./PropertyMenuWithVisualization.scss";
7
7
  */
8
8
  export interface PropertyMenuWithVisualizationProps extends PropertyMenuProps {
9
9
  color: string;
10
+ disableZoom?: boolean;
11
+ onGroupPropertyDelete?: () => void;
10
12
  }
11
13
  /**
12
14
  * Component to display a property menu with visualization.
13
15
  * @public
14
16
  */
15
- export declare const PropertyMenuWithVisualization: ({ group, color, hideRefreshIcon, ...rest }: PropertyMenuWithVisualizationProps) => JSX.Element;
17
+ export declare const PropertyMenuWithVisualization: ({ group, color, hideRefreshIcon, disableZoom, ...rest }: PropertyMenuWithVisualizationProps) => JSX.Element;
16
18
  //# sourceMappingURL=PropertyMenuWithVisualization.d.ts.map
@@ -39,11 +39,11 @@ require("./PropertyMenuWithVisualization.scss");
39
39
  * Component to display a property menu with visualization.
40
40
  * @public
41
41
  */
42
- const PropertyMenuWithVisualization = ({ group, color, hideRefreshIcon, ...rest }) => {
42
+ const PropertyMenuWithVisualization = ({ group, color, hideRefreshIcon, disableZoom, ...rest }) => {
43
43
  const [isInformationPanelOpen, setIsInformationPanelOpen] = (0, react_1.useState)(false);
44
44
  return (react_1.default.createElement(itwinui_react_1.InformationPanelWrapper, { className: "gmw-property-menu-vis-wrapper" },
45
45
  react_1.default.createElement("div", { className: "gmw-property-menu-vis-toolbar" },
46
- react_1.default.createElement(GroupColorToggle_1.GroupColorToggle, { group: group, color: color, labelPosition: "left" }),
46
+ react_1.default.createElement(GroupColorToggle_1.GroupColorToggle, { group: group, color: color, labelPosition: "left", disableZoom: disableZoom }),
47
47
  react_1.default.createElement(itwinui_react_1.IconButton, { styleType: "borderless", onClick: () => setIsInformationPanelOpen(true), title: "Group Information" },
48
48
  react_1.default.createElement(itwinui_icons_react_1.SvgProperties, null))),
49
49
  react_1.default.createElement(PropertyMenu_1.PropertyMenu, { group: group, hideRefreshIcon: hideRefreshIcon, ...rest }),
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyMenuWithVisualization.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenuWithVisualization.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,+CAAwC;AAExC,iDAA8C;AAC9C,yDAAsD;AACtD,wDAA2E;AAC3E,mEAAgE;AAChE,oEAA2D;AAC3D,gDAA8C;AAU9C;;;GAGG;AACI,MAAM,6BAA6B,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,IAAI,EAAsC,EAAE,EAAE;IAC9H,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAErF,OAAO,CACL,8BAAC,uCAAuB,IAAC,SAAS,EAAC,+BAA+B;QAChE,uCAAK,SAAS,EAAC,+BAA+B;YAC5C,8BAAC,mCAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,GAAG;YACrE,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,mBAAmB;gBAC1G,8BAAC,mCAAa,OAAG,CACN,CACT;QACN,8BAAC,2BAAY,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,KAAM,IAAI,GAAI;QAC1E,8BAAC,6CAAqB,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;AAfW,QAAA,6BAA6B,iCAexC","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"]}
1
+ {"version":3,"file":"PropertyMenuWithVisualization.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyMenuWithVisualization.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,+CAAwC;AAExC,iDAA8C;AAC9C,yDAAsD;AACtD,wDAA2E;AAC3E,mEAAgE;AAChE,oEAA2D;AAC3D,gDAA8C;AAY9C;;;GAGG;AACI,MAAM,6BAA6B,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,GAAG,IAAI,EAAsC,EAAE,EAAE;IAC3I,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAErF,OAAO,CACL,8BAAC,uCAAuB,IAAC,SAAS,EAAC,+BAA+B;QAChE,uCAAK,SAAS,EAAC,+BAA+B;YAC5C,8BAAC,mCAAgB,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAC,MAAM,EAAC,WAAW,EAAE,WAAW,GAAI;YAC/F,8BAAC,0BAAU,IAAC,SAAS,EAAC,YAAY,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAC,mBAAmB;gBAC1G,8BAAC,mCAAa,OAAG,CACN,CACT;QACN,8BAAC,2BAAY,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,eAAe,KAAM,IAAI,GAAI;QAC1E,8BAAC,6CAAqB,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;AAfW,QAAA,6BAA6B,iCAexC","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 disableZoom?: boolean;\n onGroupPropertyDelete?: () => void;\n}\n\n/**\n * Component to display a property menu with visualization.\n * @public\n */\nexport const PropertyMenuWithVisualization = ({ group, color, hideRefreshIcon, disableZoom, ...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\" disableZoom={disableZoom} />\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"]}
@@ -14,6 +14,7 @@ export interface PropertyTableProps<T extends PropertyTableItem> {
14
14
  refreshProperties: () => Promise<void>;
15
15
  deleteProperty: (propertyId: string) => Promise<void>;
16
16
  hideRefreshIcon?: boolean;
17
+ onGroupPropertyDelete?: () => void;
17
18
  }
18
- export declare const PropertyTable: <T extends PropertyTableItem>({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, }: PropertyTableProps<T>) => JSX.Element;
19
+ export declare const PropertyTable: <T extends PropertyTableItem>({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, onGroupPropertyDelete, }: PropertyTableProps<T>) => JSX.Element;
19
20
  //# sourceMappingURL=PropertyTable.d.ts.map
@@ -36,11 +36,12 @@ const react_1 = __importStar(require("react"));
36
36
  const DeleteModal_1 = __importDefault(require("../SharedComponents/DeleteModal"));
37
37
  const PropertyTableToolbar_1 = require("./PropertyTableToolbar");
38
38
  require("./PropertyTable.scss");
39
- const PropertyTable = ({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, }) => {
39
+ const PropertyTable = ({ propertyType, columnsFactory, data, isLoading, onClickAdd, refreshProperties, deleteProperty, hideRefreshIcon, onGroupPropertyDelete, }) => {
40
40
  const [showDeleteModal, setShowDeleteModal] = (0, react_1.useState)(undefined);
41
41
  const handleDeleteProperty = (0, react_1.useCallback)(async () => {
42
42
  await deleteProperty(showDeleteModal?.id ?? "");
43
- }, [deleteProperty, showDeleteModal?.id]);
43
+ onGroupPropertyDelete?.();
44
+ }, [deleteProperty, showDeleteModal?.id, onGroupPropertyDelete]);
44
45
  const handleShowDeleteModal = (0, react_1.useCallback)((property) => {
45
46
  setShowDeleteModal(property);
46
47
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"PropertyTable.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTable.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,wDAA6C;AAC7C,+CAA8D;AAG9D,kFAA0D;AAC1D,iEAA8D;AAC9D,gCAA8B;AAkBvB,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,IAAA,gBAAQ,EAAgB,SAAS,CAAC,CAAC;IAEjF,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,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,IAAA,mBAAW,EAAC,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,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEtH,OAAO,CACL,uCAAK,SAAS,EAAC,8BAA8B;QAC3C,8BAAC,2CAAoB,IACnB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,UAAU,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAChC;QACF,8BAAC,qBAAK,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,8BAAC,qBAAW,IAAC,UAAU,EAAE,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,GAAI,CAC1I,CACP,CAAC;AACJ,CAAC,CAAC;AA9CW,QAAA,aAAa,iBA8CxB","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"]}
1
+ {"version":3,"file":"PropertyTable.js","sourceRoot":"","sources":["../../../../src/components/Properties/PropertyTable.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,wDAA6C;AAC7C,+CAA8D;AAG9D,kFAA0D;AAC1D,iEAA8D;AAC9D,gCAA8B;AAmBvB,MAAM,aAAa,GAAG,CAA8B,EACzD,YAAY,EACZ,cAAc,EACd,IAAI,EACJ,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,qBAAqB,GACC,EAAE,EAAE;IAC1B,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,IAAA,gBAAQ,EAAgB,SAAS,CAAC,CAAC;IAEjF,MAAM,oBAAoB,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAClD,MAAM,cAAc,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,qBAAqB,EAAE,EAAE,CAAC;IAC5B,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEjE,MAAM,qBAAqB,GAAG,IAAA,mBAAW,EAAC,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,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAEtH,OAAO,CACL,uCAAK,SAAS,EAAC,8BAA8B;QAC3C,8BAAC,2CAAoB,IACnB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,UAAU,EAC9B,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,GAChC;QACF,8BAAC,qBAAK,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,8BAAC,qBAAW,IAAC,UAAU,EAAE,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oBAAoB,GAAI,CAC1I,CACP,CAAC;AACJ,CAAC,CAAC;AAhDW,QAAA,aAAa,iBAgDxB","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 onGroupPropertyDelete?: () => void;\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 onGroupPropertyDelete,\n}: PropertyTableProps<T>) => {\n const [showDeleteModal, setShowDeleteModal] = useState<T | undefined>(undefined);\n\n const handleDeleteProperty = useCallback(async () => {\n await deleteProperty(showDeleteModal?.id ?? \"\");\n onGroupPropertyDelete?.();\n }, [deleteProperty, showDeleteModal?.id, onGroupPropertyDelete]);\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"]}
@@ -25,6 +25,8 @@ export interface GroupHilitedElements {
25
25
  setOverlappedElementsMetadata: (overlappedElementsMetaData: OverlappedElementsMetadata) => void;
26
26
  setIsOverlappedColored: (isOverlappedColored: boolean | ((isOverlappedColored: boolean) => boolean)) => void;
27
27
  setIsVisualizationsEnabled: (isVisualizationsEnabled: boolean | ((isVisualizationsEnabled: boolean) => boolean)) => void;
28
+ groupColors: Map<string, string>;
29
+ setGroupColors: (colors: Map<string, string>) => void;
28
30
  }
29
31
  export declare const GroupHilitedElementsContext: React.Context<GroupHilitedElements>;
30
32
  export declare const useGroupHilitedElementsContext: () => GroupHilitedElements;
@@ -46,6 +46,8 @@ exports.GroupHilitedElementsContext = React.createContext({
46
46
  setOverlappedElementsMetadata: () => { },
47
47
  setIsOverlappedColored: () => { },
48
48
  setIsVisualizationsEnabled: () => { },
49
+ setGroupColors: () => { },
50
+ groupColors: new Map(),
49
51
  });
50
52
  const useGroupHilitedElementsContext = () => {
51
53
  const context = React.useContext(exports.GroupHilitedElementsContext);
@@ -1 +1 @@
1
- {"version":3,"file":"GroupHilitedElementsContext.js","sourceRoot":"","sources":["../../../../src/components/context/GroupHilitedElementsContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,6CAA+B;AA+BlB,QAAA,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAAuB;IACnF,eAAe,EAAE,IAAI,GAAG,EAAE;IAC1B,cAAc,EAAE,KAAK;IACrB,oBAAoB,EAAE,CAAC;IACvB,0BAA0B,EAAE;QAC1B,sBAAsB,EAAE,IAAI,GAAG,EAAE;QACjC,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,2BAA2B,EAAE,EAAE;KAChC;IACD,uBAAuB,EAAE,KAAK;IAC9B,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC5B,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC3B,2BAA2B,EAAE,GAAG,EAAE,GAAE,CAAC;IACrC,6BAA6B,EAAE,GAAG,EAAE,GAAE,CAAC;IACvC,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;IAChC,0BAA0B,EAAE,GAAG,EAAE,GAAE,CAAC;CACrC,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAG,GAAyB,EAAE;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;KAChH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,8BAA8B,kCAMzC","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 * as React from \"react\";\nexport interface OverlappedInfo {\n groupIds: string[];\n elements: string[];\n}\n\nexport interface OverlappedElementGroupPairs {\n elementIds: Set<string>;\n groupIds: Set<string>;\n}\n\nexport interface OverlappedElementsMetadata {\n overlappedElementsInfo: Map<string, OverlappedInfo[]>;\n groupElementsInfo: Map<string, number>;\n overlappedElementGroupPairs: OverlappedElementGroupPairs[];\n}\nexport interface GroupHilitedElements {\n hiddenGroupsIds: Set<string>;\n showGroupColor: boolean;\n currentHilitedGroups: number;\n overlappedElementsMetadata: OverlappedElementsMetadata;\n isVisualizationsEnabled: boolean;\n isOverlappedColored: boolean;\n setHiddenGroupsIds: (hiddenGroupIds: Set<string>) => void;\n setShowGroupColor: (showGroupColor: boolean | ((showGroupColor: boolean) => boolean)) => void;\n setNumberOfVisualizedGroups: (numberOfVisualizedGroups: number | ((numberOfVisualizedGroups: number) => number)) => void;\n setOverlappedElementsMetadata: (overlappedElementsMetaData: OverlappedElementsMetadata) => void;\n setIsOverlappedColored: (isOverlappedColored: boolean | ((isOverlappedColored: boolean) => boolean)) => void;\n setIsVisualizationsEnabled: (isVisualizationsEnabled: boolean | ((isVisualizationsEnabled: boolean) => boolean)) => void;\n}\n\nexport const GroupHilitedElementsContext = React.createContext<GroupHilitedElements>({\n hiddenGroupsIds: new Set(),\n showGroupColor: false,\n currentHilitedGroups: 0,\n overlappedElementsMetadata: {\n overlappedElementsInfo: new Map(),\n groupElementsInfo: new Map(),\n overlappedElementGroupPairs: [],\n },\n isVisualizationsEnabled: false,\n isOverlappedColored: false,\n setHiddenGroupsIds: () => {},\n setShowGroupColor: () => {},\n setNumberOfVisualizedGroups: () => {},\n setOverlappedElementsMetadata: () => {},\n setIsOverlappedColored: () => {},\n setIsVisualizationsEnabled: () => {},\n});\n\nexport const useGroupHilitedElementsContext = (): GroupHilitedElements => {\n const context = React.useContext(GroupHilitedElementsContext);\n if (!context) {\n throw new Error(\"useGroupHilitedElementsContext should be used within a GroupHilitedElementsContext provider\");\n }\n return context;\n};\n"]}
1
+ {"version":3,"file":"GroupHilitedElementsContext.js","sourceRoot":"","sources":["../../../../src/components/context/GroupHilitedElementsContext.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;gGAGgG;AAChG,6CAA+B;AAkClB,QAAA,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAAuB;IACnF,eAAe,EAAE,IAAI,GAAG,EAAE;IAC1B,cAAc,EAAE,KAAK;IACrB,oBAAoB,EAAE,CAAC;IACvB,0BAA0B,EAAE;QAC1B,sBAAsB,EAAE,IAAI,GAAG,EAAE;QACjC,iBAAiB,EAAE,IAAI,GAAG,EAAE;QAC5B,2BAA2B,EAAE,EAAE;KAChC;IACD,uBAAuB,EAAE,KAAK;IAC9B,mBAAmB,EAAE,KAAK;IAC1B,kBAAkB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC5B,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;IAC3B,2BAA2B,EAAE,GAAG,EAAE,GAAE,CAAC;IACrC,6BAA6B,EAAE,GAAG,EAAE,GAAE,CAAC;IACvC,sBAAsB,EAAE,GAAG,EAAE,GAAE,CAAC;IAChC,0BAA0B,EAAE,GAAG,EAAE,GAAE,CAAC;IACpC,cAAc,EAAE,GAAG,EAAE,GAAE,CAAC;IACxB,WAAW,EAAE,IAAI,GAAG,EAAE;CACvB,CAAC,CAAC;AAEI,MAAM,8BAA8B,GAAG,GAAyB,EAAE;IACvE,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,mCAA2B,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO,EAAE;QACZ,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;KAChH;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,8BAA8B,kCAMzC","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 * as React from \"react\";\nexport interface OverlappedInfo {\n groupIds: string[];\n elements: string[];\n}\n\nexport interface OverlappedElementGroupPairs {\n elementIds: Set<string>;\n groupIds: Set<string>;\n}\n\nexport interface OverlappedElementsMetadata {\n overlappedElementsInfo: Map<string, OverlappedInfo[]>;\n groupElementsInfo: Map<string, number>;\n overlappedElementGroupPairs: OverlappedElementGroupPairs[];\n}\n\nexport interface GroupHilitedElements {\n hiddenGroupsIds: Set<string>;\n showGroupColor: boolean;\n currentHilitedGroups: number;\n overlappedElementsMetadata: OverlappedElementsMetadata;\n isVisualizationsEnabled: boolean;\n isOverlappedColored: boolean;\n setHiddenGroupsIds: (hiddenGroupIds: Set<string>) => void;\n setShowGroupColor: (showGroupColor: boolean | ((showGroupColor: boolean) => boolean)) => void;\n setNumberOfVisualizedGroups: (numberOfVisualizedGroups: number | ((numberOfVisualizedGroups: number) => number)) => void;\n setOverlappedElementsMetadata: (overlappedElementsMetaData: OverlappedElementsMetadata) => void;\n setIsOverlappedColored: (isOverlappedColored: boolean | ((isOverlappedColored: boolean) => boolean)) => void;\n setIsVisualizationsEnabled: (isVisualizationsEnabled: boolean | ((isVisualizationsEnabled: boolean) => boolean)) => void;\n groupColors: Map<string, string>;\n setGroupColors: (colors: Map<string, string>) => void;\n}\n\nexport const GroupHilitedElementsContext = React.createContext<GroupHilitedElements>({\n hiddenGroupsIds: new Set(),\n showGroupColor: false,\n currentHilitedGroups: 0,\n overlappedElementsMetadata: {\n overlappedElementsInfo: new Map(),\n groupElementsInfo: new Map(),\n overlappedElementGroupPairs: [],\n },\n isVisualizationsEnabled: false,\n isOverlappedColored: false,\n setHiddenGroupsIds: () => {},\n setShowGroupColor: () => {},\n setNumberOfVisualizedGroups: () => {},\n setOverlappedElementsMetadata: () => {},\n setIsOverlappedColored: () => {},\n setIsVisualizationsEnabled: () => {},\n setGroupColors: () => {},\n groupColors: new Map(),\n});\n\nexport const useGroupHilitedElementsContext = (): GroupHilitedElements => {\n const context = React.useContext(GroupHilitedElementsContext);\n if (!context) {\n throw new Error(\"useGroupHilitedElementsContext should be used within a GroupHilitedElementsContext provider\");\n }\n return context;\n};\n"]}
@@ -11,9 +11,11 @@ import { Mappings } from "../../components/Mappings/Mappings";
11
11
  import { MappingAction } from "../../components/Mappings/Editing/MappingAction";
12
12
  import { PropertyMenuWithVisualization } from "../../components/Properties/PropertyMenuWithVisualization";
13
13
  import { GroupsVisualization } from "../../components/Groups/GroupsVisualization";
14
+ import { useGroupHilitedElementsContext } from "../../components/context/GroupHilitedElementsContext";
14
15
  export const GroupingMappingRouter = ({ currentRoute, navigateTo, goBack, hideRefreshIcon, }) => {
15
16
  const { iModelId } = useGroupingMappingApiConfig();
16
17
  const { mapping, group, property, groupContextCustomUI, queryGenerationType } = currentRoute.groupingRouteFields;
18
+ const { showGroupColor, groupColors } = useGroupHilitedElementsContext();
17
19
  switch (currentRoute.step) {
18
20
  case RouteStep.Mappings:
19
21
  return (React.createElement(Mappings, { onClickAddMapping: () => navigateTo(() => ({ step: RouteStep.MappingsAction, title: "Add Mapping", groupingRouteFields: {} })), onClickMappingTitle: (mapping) => {
@@ -70,7 +72,7 @@ export const GroupingMappingRouter = ({ currentRoute, navigateTo, goBack, hideRe
70
72
  return null;
71
73
  case RouteStep.Properties:
72
74
  if (mapping && group) {
73
- return (React.createElement(PropertyMenuWithVisualization, { mapping: mapping, group: group, color: "red", onClickAddGroupProperty: () => navigateTo((prev) => ({ step: RouteStep.PropertyAction, title: "Add Property", groupingRouteFields: { ...prev?.groupingRouteFields } })), onClickModifyGroupProperty: (gp) => navigateTo((prev) => ({
75
+ return (React.createElement(PropertyMenuWithVisualization, { mapping: mapping, group: group, color: showGroupColor ? groupColors.get(group.id) ?? "red" : "red", onClickAddGroupProperty: () => navigateTo((prev) => ({ step: RouteStep.PropertyAction, title: "Add Property", groupingRouteFields: { ...prev?.groupingRouteFields } })), onClickModifyGroupProperty: (gp) => navigateTo((prev) => ({
74
76
  step: RouteStep.PropertyAction,
75
77
  title: gp.propertyName,
76
78
  groupingRouteFields: { ...prev?.groupingRouteFields, property: gp },
@@ -1 +1 @@
1
- {"version":3,"file":"GroupingMappingRouter.js","sourceRoot":"","sources":["../../../../src/WidgetShell/Router/GroupingMappingRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { useGroupingMappingApiConfig } from \"../../components/context/GroupingApiConfigContext\";\nimport { GroupAction } from \"../../components/Groups/Editing/GroupAction\";\nimport type { Route } from \"../GroupingMapping\";\nimport { RouteStep } from \"../GroupingMapping\";\nimport { GroupPropertyAction } from \"../../components/Properties/GroupProperties/GroupPropertyAction\";\nimport { Mappings } from \"../../components/Mappings/Mappings\";\nimport { MappingAction } from \"../../components/Mappings/Editing/MappingAction\";\nimport { PropertyMenuWithVisualization } from \"../../components/Properties/PropertyMenuWithVisualization\";\nimport { GroupsVisualization } from \"../../components/Groups/GroupsVisualization\";\n\nexport const GroupingMappingRouter = ({\n currentRoute,\n navigateTo,\n goBack,\n hideRefreshIcon,\n}: {\n currentRoute: Route;\n navigateTo: (toRoute: (prev: Route | undefined) => Route) => void;\n goBack: () => void;\n hideRefreshIcon?: boolean;\n}) => {\n const { iModelId } = useGroupingMappingApiConfig();\n const { mapping, group, property, groupContextCustomUI, queryGenerationType } = currentRoute.groupingRouteFields;\n\n switch (currentRoute.step) {\n case RouteStep.Mappings:\n return (\n <Mappings\n onClickAddMapping={() => navigateTo(() => ({ step: RouteStep.MappingsAction, title: \"Add Mapping\", groupingRouteFields: {} }))}\n onClickMappingTitle={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.Groups,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n onClickMappingModify={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.MappingsAction,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n case RouteStep.MappingsAction:\n return <MappingAction mapping={mapping} onClickCancel={goBack} onSaveSuccess={goBack} />;\n case RouteStep.Groups:\n if (mapping) {\n return (\n <GroupsVisualization\n mapping={mapping}\n onClickAddGroup={(qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n groupingRouteFields: { ...prev?.groupingRouteFields, queryGenerationType: qType },\n title: \"Add Group\",\n }))\n }\n onClickGroupTitle={(g) =>\n navigateTo((prev) => ({\n step: RouteStep.Properties,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g },\n }))\n }\n onClickGroupModify={(g, qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, queryGenerationType: qType },\n }))\n }\n onClickRenderContextCustomUI={(ccUI, g, displayLabel) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupContextCustomUI,\n title: displayLabel,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, groupContextCustomUI: ccUI },\n }))\n }\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n }\n return null;\n case RouteStep.GroupAction:\n if (mapping) {\n if (queryGenerationType) {\n return (\n <GroupAction\n shouldVisualize\n mappingId={mapping.id}\n group={group}\n onClickCancel={goBack}\n onSaveSuccess={goBack}\n queryGenerationType={queryGenerationType}\n />\n );\n }\n }\n return null;\n case RouteStep.GroupContextCustomUI:\n if (mapping && group && groupContextCustomUI) {\n return React.createElement(groupContextCustomUI, {\n iModelId,\n mappingId: mapping.id,\n groupId: group.id,\n });\n }\n return null;\n case RouteStep.Properties:\n if (mapping && group) {\n return (\n <PropertyMenuWithVisualization\n mapping={mapping}\n group={group}\n color=\"red\"\n onClickAddGroupProperty={() =>\n navigateTo((prev) => ({ step: RouteStep.PropertyAction, title: \"Add Property\", groupingRouteFields: { ...prev?.groupingRouteFields } }))\n }\n onClickModifyGroupProperty={(gp) =>\n navigateTo((prev) => ({\n step: RouteStep.PropertyAction,\n title: gp.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, property: gp },\n }))\n }\n onClickAddCalculatedProperty={() =>\n navigateTo((prev) => ({\n step: RouteStep.CalculatedPropertyAction,\n title: \"Create Calculated Property\",\n groupingRouteFields: { ...prev?.groupingRouteFields },\n }))\n }\n onClickModifyCalculatedProperty={(cp) =>\n navigateTo((prev) => ({\n step: RouteStep.CalculatedPropertyAction,\n title: cp.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, calculatedProperty: cp },\n }))\n }\n onClickAddCustomCalculationProperty={() =>\n navigateTo((prev) => ({\n step: RouteStep.CustomCalculationPropertyAction,\n title: \"Create Custom Calculation\",\n groupingRouteFields: { ...prev?.groupingRouteFields },\n }))\n }\n onClickModifyCustomCalculation={(cc) =>\n navigateTo((prev) => ({\n step: RouteStep.CustomCalculationPropertyAction,\n title: cc.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, customCalculation: cc },\n }))\n }\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n }\n return null;\n case RouteStep.PropertyAction: {\n if (mapping && group) {\n return <GroupPropertyAction mappingId={mapping.id} group={group} groupProperty={property} onSaveSuccess={goBack} onClickCancel={goBack} />;\n }\n return null;\n }\n default:\n return null;\n }\n};\n"]}
1
+ {"version":3,"file":"GroupingMappingRouter.js","sourceRoot":"","sources":["../../../../src/WidgetShell/Router/GroupingMappingRouter.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\nimport React from \"react\";\nimport { useGroupingMappingApiConfig } from \"../../components/context/GroupingApiConfigContext\";\nimport { GroupAction } from \"../../components/Groups/Editing/GroupAction\";\nimport type { Route } from \"../GroupingMapping\";\nimport { RouteStep } from \"../GroupingMapping\";\nimport { GroupPropertyAction } from \"../../components/Properties/GroupProperties/GroupPropertyAction\";\nimport { Mappings } from \"../../components/Mappings/Mappings\";\nimport { MappingAction } from \"../../components/Mappings/Editing/MappingAction\";\nimport { PropertyMenuWithVisualization } from \"../../components/Properties/PropertyMenuWithVisualization\";\nimport { GroupsVisualization } from \"../../components/Groups/GroupsVisualization\";\nimport { useGroupHilitedElementsContext } from \"../../components/context/GroupHilitedElementsContext\";\n\nexport const GroupingMappingRouter = ({\n currentRoute,\n navigateTo,\n goBack,\n hideRefreshIcon,\n}: {\n currentRoute: Route;\n navigateTo: (toRoute: (prev: Route | undefined) => Route) => void;\n goBack: () => void;\n hideRefreshIcon?: boolean;\n}) => {\n const { iModelId } = useGroupingMappingApiConfig();\n const { mapping, group, property, groupContextCustomUI, queryGenerationType } = currentRoute.groupingRouteFields;\n const { showGroupColor, groupColors } = useGroupHilitedElementsContext();\n\n switch (currentRoute.step) {\n case RouteStep.Mappings:\n return (\n <Mappings\n onClickAddMapping={() => navigateTo(() => ({ step: RouteStep.MappingsAction, title: \"Add Mapping\", groupingRouteFields: {} }))}\n onClickMappingTitle={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.Groups,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n onClickMappingModify={(mapping) => {\n navigateTo(() => ({\n step: RouteStep.MappingsAction,\n groupingRouteFields: { mapping },\n title: mapping.mappingName,\n }));\n }}\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n case RouteStep.MappingsAction:\n return <MappingAction mapping={mapping} onClickCancel={goBack} onSaveSuccess={goBack} />;\n case RouteStep.Groups:\n if (mapping) {\n return (\n <GroupsVisualization\n mapping={mapping}\n onClickAddGroup={(qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n groupingRouteFields: { ...prev?.groupingRouteFields, queryGenerationType: qType },\n title: \"Add Group\",\n }))\n }\n onClickGroupTitle={(g) =>\n navigateTo((prev) => ({\n step: RouteStep.Properties,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g },\n }))\n }\n onClickGroupModify={(g, qType) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupAction,\n title: g.groupName,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, queryGenerationType: qType },\n }))\n }\n onClickRenderContextCustomUI={(ccUI, g, displayLabel) =>\n navigateTo((prev) => ({\n step: RouteStep.GroupContextCustomUI,\n title: displayLabel,\n groupingRouteFields: { ...prev?.groupingRouteFields, group: g, groupContextCustomUI: ccUI },\n }))\n }\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n }\n return null;\n case RouteStep.GroupAction:\n if (mapping) {\n if (queryGenerationType) {\n return (\n <GroupAction\n shouldVisualize\n mappingId={mapping.id}\n group={group}\n onClickCancel={goBack}\n onSaveSuccess={goBack}\n queryGenerationType={queryGenerationType}\n />\n );\n }\n }\n return null;\n case RouteStep.GroupContextCustomUI:\n if (mapping && group && groupContextCustomUI) {\n return React.createElement(groupContextCustomUI, {\n iModelId,\n mappingId: mapping.id,\n groupId: group.id,\n });\n }\n return null;\n case RouteStep.Properties:\n if (mapping && group) {\n return (\n <PropertyMenuWithVisualization\n mapping={mapping}\n group={group}\n color={showGroupColor ? groupColors.get(group.id) ?? \"red\" : \"red\"}\n onClickAddGroupProperty={() =>\n navigateTo((prev) => ({ step: RouteStep.PropertyAction, title: \"Add Property\", groupingRouteFields: { ...prev?.groupingRouteFields } }))\n }\n onClickModifyGroupProperty={(gp) =>\n navigateTo((prev) => ({\n step: RouteStep.PropertyAction,\n title: gp.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, property: gp },\n }))\n }\n onClickAddCalculatedProperty={() =>\n navigateTo((prev) => ({\n step: RouteStep.CalculatedPropertyAction,\n title: \"Create Calculated Property\",\n groupingRouteFields: { ...prev?.groupingRouteFields },\n }))\n }\n onClickModifyCalculatedProperty={(cp) =>\n navigateTo((prev) => ({\n step: RouteStep.CalculatedPropertyAction,\n title: cp.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, calculatedProperty: cp },\n }))\n }\n onClickAddCustomCalculationProperty={() =>\n navigateTo((prev) => ({\n step: RouteStep.CustomCalculationPropertyAction,\n title: \"Create Custom Calculation\",\n groupingRouteFields: { ...prev?.groupingRouteFields },\n }))\n }\n onClickModifyCustomCalculation={(cc) =>\n navigateTo((prev) => ({\n step: RouteStep.CustomCalculationPropertyAction,\n title: cc.propertyName,\n groupingRouteFields: { ...prev?.groupingRouteFields, customCalculation: cc },\n }))\n }\n hideRefreshIcon={hideRefreshIcon}\n />\n );\n }\n return null;\n case RouteStep.PropertyAction: {\n if (mapping && group) {\n return <GroupPropertyAction mappingId={mapping.id} group={group} groupProperty={property} onSaveSuccess={goBack} onClickCancel={goBack} />;\n }\n return null;\n }\n default:\n return null;\n }\n};\n"]}
@@ -74,6 +74,7 @@ export const GroupingMappingContext = (props) => {
74
74
  const [hiddenGroupsIds, setHiddenGroupsIds] = useState(new Set());
75
75
  const [showGroupColor, setShowGroupColor] = useState(false);
76
76
  const [propertiesShowGroup, setPropertiesShowGroup] = useState(false);
77
+ const [groupColors, setGroupColors] = useState(new Map());
77
78
  const [groups, setGroups] = useState([]);
78
79
  const [numberOfVisualizedGroups, setNumberOfVisualizedGroups] = useState(0);
79
80
  const [isOverlappedColored, setIsOverlappedColored] = useState(false);
@@ -127,6 +128,8 @@ export const GroupingMappingContext = (props) => {
127
128
  setIsVisualizationsEnabled,
128
129
  overlappedElementsMetadata,
129
130
  setOverlappedElementsMetadata,
131
+ groupColors,
132
+ setGroupColors,
130
133
  }), [
131
134
  showGroupColor,
132
135
  hiddenGroupsIds,
@@ -136,6 +139,8 @@ export const GroupingMappingContext = (props) => {
136
139
  currentHilitedGroups,
137
140
  isVisualizationsEnabled,
138
141
  overlappedElementsMetadata,
142
+ groupColors,
143
+ setGroupColors,
139
144
  ]);
140
145
  const propertiesContextValue = useMemo(() => ({
141
146
  showGroupColor: propertiesShowGroup,