Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/young-moles-refuse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@vue-flow/core": patch
---

Block pane ctx-menu from triggering if panOnDrag includes btn 2 (right-click) and let viewport emit pane ctx menu.
18 changes: 3 additions & 15 deletions examples/vite/src/Basic/Basic.vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts" setup>
import type { Edge, Node, ValidConnectionFunc } from '@vue-flow/core'
import { ConnectionMode, Panel, VueFlow, isNode, useVueFlow } from '@vue-flow/core'
import type { Edge, Node } from '@vue-flow/core'
import { Panel, VueFlow, isNode, useVueFlow } from '@vue-flow/core'

import { Background } from '@vue-flow/background'
import { Controls } from '@vue-flow/controls'
Expand Down Expand Up @@ -45,22 +45,10 @@ function resetViewport() {
function toggleclass() {
return nodes.value.forEach((el) => (el.class = el.class === 'light' ? 'dark' : 'light'))
}

const isValidConnection: ValidConnectionFunc = (...args) => {
console.log(args)
return true
}
</script>

<template>
<VueFlow
:nodes="nodes"
:edges="edges"
:connection-mode="ConnectionMode.Strict"
:is-valid-connection="isValidConnection"
fit-view-on-init
class="vue-flow-basic-example"
>
<VueFlow :nodes="nodes" :edges="edges" class="vue-flow-basic-example" fit-view-on-init>
<Background />
<MiniMap />
<Controls />
Expand Down
19 changes: 11 additions & 8 deletions packages/core/src/container/Pane/Pane.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<script lang="ts" setup>
import { ref, toRef, watch } from 'vue'
import { shallowRef, toRef, watch } from 'vue'
import UserSelection from '../../components/UserSelection/UserSelection.vue'
import NodesSelection from '../../components/NodesSelection/NodesSelection.vue'
import type { EdgeChange, NodeChange } from '../../types'
Expand Down Expand Up @@ -33,15 +33,16 @@ const {
connectionLookup,
defaultEdgeOptions,
connectionStartHandle,
panOnDrag,
} = useVueFlow()

const container = ref<HTMLDivElement | null>(null)
const container = shallowRef<HTMLDivElement | null>(null)

const selectedNodeIds = ref<Set<string>>(new Set())
const selectedNodeIds = shallowRef<Set<string>>(new Set())

const selectedEdgeIds = ref<Set<string>>(new Set())
const selectedEdgeIds = shallowRef<Set<string>>(new Set())

const containerBounds = ref<DOMRect>()
const containerBounds = shallowRef<DOMRect | null>(null)

const hasActiveSelection = toRef(() => elementsSelectable.value && (isSelecting || userSelectionActive.value))

Expand Down Expand Up @@ -95,8 +96,10 @@ function onClick(event: MouseEvent) {
}

function onContextMenu(event: MouseEvent) {
event.preventDefault()
event.stopPropagation()
if (Array.isArray(panOnDrag.value) && panOnDrag.value?.includes(2)) {
event.preventDefault()
return
}

emits.paneContextMenu(event)
}
Expand All @@ -106,7 +109,7 @@ function onWheel(event: WheelEvent) {
}

function onPointerDown(event: PointerEvent) {
containerBounds.value = vueFlowRef.value?.getBoundingClientRect()
containerBounds.value = vueFlowRef.value?.getBoundingClientRect() ?? null

if (
!elementsSelectable.value ||
Expand Down
Loading