Files
vue-flow/docs/examples/validation/App.vue
2024-06-17 18:52:11 +02:00

75 lines
1.6 KiB
Vue

<script setup>
import { ref } from 'vue'
import { VueFlow, useVueFlow } from '@vue-flow/core'
import CustomInput from './CustomInput.vue'
import CustomNode from './CustomNode.vue'
const { addEdges } = useVueFlow()
const nodes = ref([
{
id: '0',
type: 'input',
position: { x: 0, y: 150 },
// only target `B` is valid for this node
data: { validTarget: 'B', validSource: '0' },
},
{
id: 'A',
type: 'custom',
position: { x: 250, y: 0 },
// no valid connections can be made for this node
data: {},
},
{
id: 'B',
type: 'custom',
position: { x: 250, y: 150 },
// only source `0` is valid for this node
data: { validTarget: 'B', validSource: '0' },
},
{
id: 'C',
type: 'custom',
position: { x: 250, y: 300 },
// no valid connections can be made for this node
data: {},
},
])
const edges = ref([])
function onConnectStart({ nodeId, handleType }) {
console.log('on connect start', { nodeId, handleType })
}
function onConnectEnd(event) {
console.log('on connect end', event)
}
function onConnect(params) {
console.log('on connect', params)
addEdges(params)
}
</script>
<template>
<VueFlow
:nodes="nodes"
:edges="edges"
fit-view-on-init
class="validationflow"
@connect="onConnect"
@connect-start="onConnectStart"
@connect-end="onConnectEnd"
>
<template #node-input="props">
<CustomInput :data="props.data" />
</template>
<template #node-custom="props">
<CustomNode :id="props.id" :data="props.data" />
</template>
</VueFlow>
</template>