Vue Flow ๐
Vue Flow: A highly customizable Vue3 Flowchart component.
With Vue Flow you can build your own, customized node-based applications like static diagrams or even more complex and
interactive editors!
You can find a detailed explanation on how to get started in the documentation or check
the examples.
If you want to see how it's used with Nuxt3, check out the docs repo!
โญ๏ธ Features
-
๐ถ Easy to use: Seamless zooming & panning behaviour and single and multi-selections of
elements
-
๐จ Customizable: Different and edge types and support for custom nodes with multiple handles and custom edges
-
๐ Fast rendering: Only nodes that have changed are re-rendered and only those that are in the viewport are displayed (optionally)
-
๐งฒ Utils: Snap-to-grid and graph helper functions
-
๐ฆ Additional Components:
-
๐ผ Background
-
๐งญ Minimap
-
๐น Controls
-
๐ฆพ Fully written in TypeScript
๐ Setup
$ npm i @braks/vue-flow
$ yarn add @braks/vue-flow
๐ฎ Quickstart
A flow consists of nodes and edges (or just nodes). Together we call them
elements. You can pass a set of elements as a prop to the Flow component.
Each element needs a unique id. A node needs a position and a label and an
edge needs a source (node id) and a target (node id). These are the most basic parameters for a flow. A simple setup could
look like this:
<!-- Flowchart.vue -->
<template>
<VueFlow :elements="elements"></VueFlow>
</template>
<script lang="ts" setup>
import { VueFlow, Elements, Position } from '@braks/vue-flow'
const elements = ref<Elements>([
{
id: '1',
data: {
label: 'node 1',
},
position: { x: 100, y: 100 },
targetPosition: Position.Right
},
{
id: '2',
data: {
label: 'node 2',
},
position: { x: 100, y: 200 },
sourcePosition: Position.Left
},
{
id: 'e1-2',
label: 'default edge',
target: '2',
source: '1',
},
])
</script>
Make sure to import the necessary styles:
@import "node_modules/@braks/vue-flow/dist/style.css";
@import "node_modules/@braks/vue-flow/dist/theme-default.css";
โธ Vue 2
This library doesn't work with Vue2.
๐งช Development
$ yarn dev
$ yarn build
๐ Credit
Thanks to webkid for creating React Flow! Without their work this would've been impossible for me.