feat(react): add selectable option to edges

This commit is contained in:
moklick
2023-05-17 13:26:52 +02:00
parent dd8292ce57
commit fb712a513f
3 changed files with 10 additions and 6 deletions
@@ -37,7 +37,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
targetY, targetY,
sourcePosition, sourcePosition,
targetPosition, targetPosition,
elementsSelectable, isSelectable,
hidden, hidden,
sourceHandleId, sourceHandleId,
targetHandleId, targetHandleId,
@@ -73,7 +73,7 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => { const onEdgeClick = (event: React.MouseEvent<SVGGElement, MouseEvent>): void => {
const { edges, addSelectedEdges } = store.getState(); const { edges, addSelectedEdges } = store.getState();
if (elementsSelectable) { if (isSelectable) {
store.setState({ nodesSelectionActive: false }); store.setState({ nodesSelectionActive: false });
addSelectedEdges([id]); addSelectedEdges([id]);
} }
@@ -137,10 +137,10 @@ export default (EdgeComponent: ComponentType<EdgeProps>) => {
const onEdgeUpdaterMouseEnter = () => setUpdateHover(true); const onEdgeUpdaterMouseEnter = () => setUpdateHover(true);
const onEdgeUpdaterMouseOut = () => setUpdateHover(false); const onEdgeUpdaterMouseOut = () => setUpdateHover(false);
const inactive = !elementsSelectable && !onClick; const inactive = !isSelectable && !onClick;
const onKeyDown = (event: KeyboardEvent) => { const onKeyDown = (event: KeyboardEvent) => {
if (elementSelectionKeys.includes(event.key) && elementsSelectable) { if (elementSelectionKeys.includes(event.key) && isSelectable) {
const { unselectNodesAndEdges, addSelectedEdges, edges } = store.getState(); const { unselectNodesAndEdges, addSelectedEdges, edges } = store.getState();
const unselect = event.key === 'Escape'; const unselect = event.key === 'Escape';
@@ -115,6 +115,10 @@ const EdgeRenderer = ({
const isUpdatable = const isUpdatable =
typeof onEdgeUpdate !== 'undefined' && typeof onEdgeUpdate !== 'undefined' &&
(edge.updatable || (edgesUpdatable && typeof edge.updatable === 'undefined')); (edge.updatable || (edgesUpdatable && typeof edge.updatable === 'undefined'));
const isSelectable = !!(
edge.selectable ||
(elementsSelectable && typeof edge.selectable === 'undefined')
);
if (!sourceHandle || !targetHandle) { if (!sourceHandle || !targetHandle) {
onError?.('008', errorMessages['error008'](sourceHandle, edge)); onError?.('008', errorMessages['error008'](sourceHandle, edge));
@@ -160,7 +164,7 @@ const EdgeRenderer = ({
targetY={targetY} targetY={targetY}
sourcePosition={sourcePosition} sourcePosition={sourcePosition}
targetPosition={targetPosition} targetPosition={targetPosition}
elementsSelectable={elementsSelectable} isSelectable={isSelectable}
onEdgeUpdate={onEdgeUpdate} onEdgeUpdate={onEdgeUpdate}
onContextMenu={onEdgeContextMenu} onContextMenu={onEdgeContextMenu}
onMouseEnter={onEdgeMouseEnter} onMouseEnter={onEdgeMouseEnter}
+1 -1
View File
@@ -60,7 +60,6 @@ export type WrapEdgeProps<T = any> = Omit<Edge<T>, 'sourceHandle' | 'targetHandl
targetY: number; targetY: number;
sourcePosition: Position; sourcePosition: Position;
targetPosition: Position; targetPosition: Position;
elementsSelectable?: boolean;
onEdgeUpdate?: OnEdgeUpdateFunc; onEdgeUpdate?: OnEdgeUpdateFunc;
onContextMenu?: EdgeMouseHandler; onContextMenu?: EdgeMouseHandler;
onMouseEnter?: EdgeMouseHandler; onMouseEnter?: EdgeMouseHandler;
@@ -72,6 +71,7 @@ export type WrapEdgeProps<T = any> = Omit<Edge<T>, 'sourceHandle' | 'targetHandl
rfId?: string; rfId?: string;
isFocusable: boolean; isFocusable: boolean;
isUpdatable: EdgeUpdatable; isUpdatable: EdgeUpdatable;
isSelectable: boolean;
pathOptions?: BezierPathOptions | SmoothStepPathOptions; pathOptions?: BezierPathOptions | SmoothStepPathOptions;
}; };