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:
@@ -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"
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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