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:
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user