update(examples): Use vmodel for custom node

* use v-model for save & restore example

Signed-off-by: Braks <78412429+bcakmakoglu@users.noreply.github.com>
This commit is contained in:
Braks
2021-11-19 13:47:09 +01:00
parent 054e71a609
commit f99dca1c11
4 changed files with 10 additions and 18 deletions

View File

@@ -30,8 +30,8 @@ const onLoad = (flowInstance: FlowInstance) => {
flowInstance.fitView()
console.log('flow loaded:', flowInstance)
}
const onNodeDragStop = (_: MouseEvent, node: Node) => console.log('drag stop', node)
const onElementClick = (_: MouseEvent, element: FlowElement) => console.log('click', element)
const onNodeDragStop = ({ node }) => console.log('drag stop', node)
const onElementClick = ({ element }) => console.log('click', element)
const nodeStroke = (n: Node): string => {
if (n.type === 'input') return '#0041d0'
if (n.type === 'selectorNode') return bgColor.value
@@ -112,7 +112,7 @@ const onConnect = (params: Connection | Edge) =>
</script>
<template>
<VueFlow
:elements="elements"
v-model="elements"
:style="`background: ${bgColor}`"
:node-types="nodeTypes"
:connection-mode="ConnectionMode.Loose"

View File

@@ -26,7 +26,6 @@ switch (props.data.color) {
break
}
const onChange = (e: any) => emit('change', { color, val: e.target.value })
console.log('rgb')
</script>
<template>
<div class="px-4 py-2 bg-white rounded-md border-2 border-solid border-black text-left transform scale-75 lg:scale-100">

View File

@@ -1,5 +1,5 @@
<script lang="ts" setup>
import { useZoomPanHelper, FlowInstance, FlowExportObject, Node } from '~/index'
import { useZoomPanHelper, FlowExportObject, Node, useVueFlow } from '~/index'
const flowKey = 'example-flow'
const state = useStorage(flowKey, {
@@ -12,15 +12,11 @@ const getNodeId = () => `randomnode_${+new Date()}`
const { transform } = useZoomPanHelper()
type ControlsProps = {
flowInstance?: FlowInstance
}
const props = defineProps<ControlsProps>()
const flow = useVueFlow()
const emit = defineEmits(['restore', 'add'])
const onSave = () => {
if (props.flowInstance) state.value = props.flowInstance.toObject()
if (flow.instance) state.value = flow.instance.toObject()
}
const onRestore = () => {
@@ -39,7 +35,7 @@ const onAdd = () => {
data: { label: 'Added node' },
position: { x: Math.random() * window.innerWidth - 100, y: Math.random() * window.innerHeight },
} as Node
emit('add', newNode)
flow.addElements([newNode])
}
</script>
<template>

View File

@@ -1,6 +1,6 @@
<script lang="ts" setup>
import Controls from './Controls.vue'
import { VueFlow, addEdge, Connection, Node, Edge, Elements, FlowInstance, removeElements } from '~/index'
import { VueFlow, addEdge, Connection, Edge, Elements, removeElements } from '~/index'
import './save.css'
@@ -11,16 +11,13 @@ const initialElements: Elements = [
]
const elements = ref(initialElements)
const flowInstance = ref()
const onConnect = (params: Connection | Edge) => (elements.value = addEdge(params, elements.value))
const onElementsRemove = (elementsToRemove: Elements) => (elements.value = removeElements(elementsToRemove, elements.value))
const onLoad = (instance: FlowInstance) => (flowInstance.value = instance)
const onRestore = (els: Elements) => (elements.value = els)
const onAdd = (el: Node) => (elements.value = elements.value.concat(el))
</script>
<template>
<VueFlow :elements="elements" @elements-remove="onElementsRemove" @connect="onConnect" @load="onLoad">
<Controls :flow-instance="flowInstance" @restore="onRestore" @add="onAdd" />
<VueFlow v-model="elements" storage-key="vue-flow-123" @elements-remove="onElementsRemove" @connect="onConnect">
<Controls @restore="onRestore" />
</VueFlow>
</template>