Merge pull request #3933 from xyflow/draggable-cursor-fix

Draggable cursor fix
This commit is contained in:
Moritz Klack
2024-02-26 14:18:12 +01:00
committed by GitHub
6 changed files with 25 additions and 10 deletions
@@ -220,6 +220,7 @@ export function NodeWrapper<NodeType extends Node>({
selected: node.selected, selected: node.selected,
selectable: isSelectable, selectable: isSelectable,
parent: isParent, parent: isParent,
draggable: isDraggable,
dragging, dragging,
}, },
])} ])}
+1 -1
View File
@@ -220,7 +220,7 @@ export function Pane({
return ( return (
<div <div
className={cc(['react-flow__pane', { dragging, selection: isSelecting }])} className={cc(['react-flow__pane', { draggable: panOnDrag, dragging, selection: isSelecting }])}
onClick={hasActiveSelection ? undefined : wrapHandler(onClick, container)} onClick={hasActiveSelection ? undefined : wrapHandler(onClick, container)}
onContextMenu={wrapHandler(onContextMenu, container)} onContextMenu={wrapHandler(onContextMenu, container)}
onWheel={wrapHandler(onWheel, container)} onWheel={wrapHandler(onWheel, container)}
@@ -22,6 +22,7 @@
export let animated: $$Props['animated'] = false; export let animated: $$Props['animated'] = false;
export let selected: $$Props['selected'] = false; export let selected: $$Props['selected'] = false;
export let selectable: $$Props['selectable'] = undefined;
export let hidden: $$Props['hidden'] = false; export let hidden: $$Props['hidden'] = false;
export let label: $$Props['label'] = undefined; export let label: $$Props['label'] = undefined;
export let labelStyle: $$Props['labelStyle'] = undefined; export let labelStyle: $$Props['labelStyle'] = undefined;
@@ -44,7 +45,7 @@
setContext('svelteflow__edge_id', id); setContext('svelteflow__edge_id', id);
const { edgeLookup, edgeTypes, flowId } = useStore(); const { edgeLookup, edgeTypes, flowId, elementsSelectable } = useStore();
const dispatch = createEventDispatcher<{ const dispatch = createEventDispatcher<{
edgeclick: { edge: Edge; event: MouseEvent | TouchEvent }; edgeclick: { edge: Edge; event: MouseEvent | TouchEvent };
edgecontextmenu: { edge: Edge; event: MouseEvent }; edgecontextmenu: { edge: Edge; event: MouseEvent };
@@ -53,6 +54,7 @@
$: edgeComponent = $edgeTypes[type!] || BezierEdgeInternal; $: edgeComponent = $edgeTypes[type!] || BezierEdgeInternal;
$: markerStartUrl = markerStart ? `url(#${getMarkerId(markerStart, $flowId)})` : undefined; $: markerStartUrl = markerStart ? `url(#${getMarkerId(markerStart, $flowId)})` : undefined;
$: markerEndUrl = markerEnd ? `url(#${getMarkerId(markerEnd, $flowId)})` : undefined; $: markerEndUrl = markerEnd ? `url(#${getMarkerId(markerEnd, $flowId)})` : undefined;
$: isSelectable = selectable || ($elementsSelectable && typeof selectable === 'undefined');
const handleEdgeSelect = useHandleEdgeSelect(); const handleEdgeSelect = useHandleEdgeSelect();
@@ -82,6 +84,7 @@
class={cc(['svelte-flow__edge', className])} class={cc(['svelte-flow__edge', className])}
class:animated class:animated
class:selected class:selected
class:selectable={isSelectable}
data-id={id} data-id={id}
on:click={onClick} on:click={onClick}
on:contextmenu={onContextMenu} on:contextmenu={onContextMenu}
@@ -33,6 +33,7 @@
style={edge.style} style={edge.style}
animated={edge.animated} animated={edge.animated}
selected={edge.selected} selected={edge.selected}
selectable={edge.selectable}
hidden={edge.hidden} hidden={edge.hidden}
label={edge.label} label={edge.label}
labelStyle={edge.labelStyle} labelStyle={edge.labelStyle}
@@ -202,6 +202,7 @@
<div <div
bind:this={container} bind:this={container}
class="svelte-flow__pane" class="svelte-flow__pane"
class:draggable={panOnDrag}
class:dragging={$dragging} class:dragging={$dragging}
class:selection={isSelecting} class:selection={isSelecting}
on:click={hasActiveSelection ? undefined : wrapHandler(onClick, container)} on:click={hasActiveSelection ? undefined : wrapHandler(onClick, container)}
+17 -8
View File
@@ -66,14 +66,17 @@
.xy-flow__pane { .xy-flow__pane {
z-index: 1; z-index: 1;
cursor: grab;
&.selection { &.selection {
cursor: pointer; cursor: pointer;
} }
&.dragging { &.draggable {
cursor: grabbing; cursor: grab;
&.dragging {
cursor: grabbing;
}
} }
} }
@@ -120,7 +123,10 @@
.xy-flow__edge { .xy-flow__edge {
pointer-events: visibleStroke; pointer-events: visibleStroke;
cursor: pointer;
&.selectable {
cursor: pointer;
}
&.animated path { &.animated path {
stroke-dasharray: 5; stroke-dasharray: 5;
@@ -183,16 +189,19 @@ svg.xy-flow__connectionline {
pointer-events: all; pointer-events: all;
transform-origin: 0 0; transform-origin: 0 0;
box-sizing: border-box; box-sizing: border-box;
cursor: grab; cursor: default;
&.dragging { &.selectable {
cursor: grabbing; cursor: pointer;
} }
/* only used in Svelte Flow, should we remove it here? */
&.draggable { &.draggable {
cursor: grab; cursor: grab;
pointer-events: all; pointer-events: all;
&.dragging {
cursor: grabbing;
}
} }
} }