Merge pull request #3933 from xyflow/draggable-cursor-fix
Draggable cursor fix
This commit is contained in:
@@ -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,
|
||||||
},
|
},
|
||||||
])}
|
])}
|
||||||
|
|||||||
@@ -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)}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user