diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index f387961528..042004efe3 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -91,6 +91,7 @@ This will be fixed in the next version. - https://github.com/eclipse-sirius/sirius-web/issues/2228[#2228] [domain] Creating a domain from the onboard area action now initialize its name. - https://github.com/eclipse-sirius/sirius-web/issues/2329[#2329] [form] Change the default representation in the details view for non containment reference from a select widget to a reference widget. - https://github.com/eclipse-sirius/sirius-web/issues/2314[#2314] [diagram] Add feedback on edge selection on react-flow diagrams +- https://github.com/eclipse-sirius/sirius-web/issues/2313[#2313] [diagram] Support edge palette on react-flow diagrams == v2023.8.0 diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/DiagramRenderer.tsx b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/DiagramRenderer.tsx index cc59c5eb36..e0226776ec 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/DiagramRenderer.tsx +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/DiagramRenderer.tsx @@ -42,6 +42,7 @@ import { ListNode } from './node/ListNode'; import { RectangularNode } from './node/RectangularNode'; import { DiagramPalette } from './palette/DiagramPalette'; import { useDiagramPalette } from './palette/useDiagramPalette'; +import { useEdgePalette } from './palette/useEdgePalette'; import { DiagramPanel } from './panel/DiagramPanel'; import { useReconnectEdge } from './reconnect-edge/useReconnectEdge'; @@ -70,6 +71,8 @@ export const DiagramRenderer = ({ diagram, selection, setSelection }: DiagramRen snapToGrid: false, }); const { onDiagramBackgroundClick, hideDiagramPalette } = useDiagramPalette(); + const { onEdgeClick } = useEdgePalette(); + const { onConnect } = useConnector(); const { reconnectEdge } = useReconnectEdge(); const { onDrop, onDragOver } = useDrop(); @@ -177,6 +180,10 @@ export const DiagramRenderer = ({ diagram, selection, setSelection }: DiagramRen onDiagramBackgroundClick(event); }; + const handleEdgeClick = (event: React.MouseEvent) => { + onEdgeClick(event); + }; + const handleSnapToGrid = (snapToGrid: boolean) => setState((prevState) => ({ ...prevState, snapToGrid })); const onKeyDown = (event: React.KeyboardEvent) => { @@ -196,6 +203,7 @@ export const DiagramRenderer = ({ diagram, selection, setSelection }: DiagramRen onEdgesChange={handleEdgesChange} onEdgeUpdate={reconnectEdge} onPaneClick={handlePaneClick} + onEdgeClick={handleEdgeClick} onMove={() => hideDiagramPalette()} onDrop={onDrop} onDragOver={onDragOver} diff --git a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/edge/MultiLabelEdge.tsx b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/edge/MultiLabelEdge.tsx index 568f31cc91..96bd06a2e0 100644 --- a/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/edge/MultiLabelEdge.tsx +++ b/packages/diagrams/frontend/sirius-components-diagrams-reactflow/src/renderer/edge/MultiLabelEdge.tsx @@ -14,6 +14,7 @@ import { Theme, useTheme } from '@material-ui/core/styles'; import { memo } from 'react'; import { BaseEdge, EdgeLabelRenderer, EdgeProps, getSmoothStepPath } from 'reactflow'; import { Label } from '../Label'; +import { EdgePalette } from '../palette/EdgePalette'; import { MultiLabelEdgeData } from './MultiLabelEdge.types'; const multiLabelEdgeStyle = ( @@ -70,6 +71,7 @@ export const MultiLabelEdge = memo( markerEnd={selected ? `${markerEnd?.slice(0, markerEnd.length - 1)}--selected)` : markerEnd} markerStart={selected ? `${markerStart?.slice(0, markerStart.length - 1)}--selected)` : markerStart} /> + {selected ? : null} {beginLabel && (