* docs: Animations * docs: add confetti gun * docs: update basic example on home page * docs(deps): Add stackblitz sdk to deps * chore: update yarn.lock * docs: use vue repl * docs: remove stackblitz sdk * docs: basic repl example * docs: use repl for examples/index.md (basic example) * docs: pass ext to repl * docs: add copy plugin * docs: use import map instead of dynamic imports * docs: use repl for custom node example * docs: hide repl errors * docs: use repl for custom connectionline example * docs: use repl for edges example * docs: exclude repl from ssr * docs: use repl for nested example * docs: use repl for stress example * docs: rename customNode to custom-node * docs: use repl for update-edge example * docs: use repl for update-node example * docs: use repl for validation example * docs: use repl for save-restore example * docs: scale down minimap in repl examples * docs: use repl for dnd example * docs: use repl for empty example * docs: use repl for hidden example * docs: use repl for interaction example * docs: use repl for multi example * docs: add pinia example with stackblitz * docs: update basic example * docs: update examples * docs: remove transition from intro * docs: update features * update: README.md * docs: scope css
48 lines
1.5 KiB
Vue
48 lines
1.5 KiB
Vue
<script setup>
|
|
import { VueFlow, addEdge } from '@braks/vue-flow'
|
|
import { ref } from 'vue'
|
|
import CustomInput from './CustomInput.vue'
|
|
import CustomNode from './CustomNode.vue'
|
|
|
|
const elements = ref([
|
|
{ id: '0', type: 'custominput', position: { x: 0, y: 150 }, isValidTargetPos: (connection) => connection.target === 'B' },
|
|
{
|
|
id: 'A',
|
|
type: 'custom',
|
|
position: { x: 250, y: 0 },
|
|
isValidSourcePos: () => false,
|
|
},
|
|
{ id: 'B', type: 'custom', position: { x: 250, y: 150 }, isValidSourcePos: (connection) => connection.target === 'B' },
|
|
{ id: 'C', type: 'custom', position: { x: 250, y: 300 }, isValidSourcePos: (connection) => connection.target === 'B' },
|
|
])
|
|
|
|
const onLoad = (flowInstance) => flowInstance.fitView()
|
|
const onConnectStart = ({ nodeId, handleType }) => console.log('on connect start', { nodeId, handleType })
|
|
const onConnectStop = (event) => console.log('on connect stop', event)
|
|
const onConnectEnd = (event) => console.log('on connect end', event)
|
|
|
|
const onConnect = (params) => {
|
|
console.log('on connect', params)
|
|
addEdge(params, elements.value)
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<VueFlow
|
|
class="validationflow"
|
|
v-model="elements"
|
|
@connect="onConnect"
|
|
@pane-ready="onLoad"
|
|
@connect-start="onConnectStart"
|
|
@connect-stop="onConnectStop"
|
|
@connect-end="onConnectEnd"
|
|
>
|
|
<template #node-custominput="props">
|
|
<CustomInput v-bind="props" />
|
|
</template>
|
|
<template #node-custom="props">
|
|
<CustomNode v-bind="props" />
|
|
</template>
|
|
</VueFlow>
|
|
</template>
|