Introduction
A highly customizable streaming flow builder. The registration ability can flexibly customize your nodes, different types of node display and form, etc.
Try it out
https://react-flow-builder.web.cloudendpoint.cn/
Installation
yarn add react-flow-builder
or
npm install react-flow-builder
Usage
import React, { useState } from 'react';
import FlowBuilder from 'react-flow-builder';
const registerNodes = [
{
type: 'start',
name: 'start',
},
{
type: 'end',
name: 'end',
},
{
type: 'common',
name: 'common',
},
{
type: 'branch',
name: 'branch',
conditionNodeType: 'condition',
},
{
type: 'condition',
name: 'condition',
},
];
export default function () {
const [nodes, setNodes] = useState([]);
return (
<FlowBuilder
registerNodes={registerNodes}
nodes={nodes}
onChange={setNodes}
/>
);
}
API
FlowBuilder
Property | Description | Type | Required | Default |
---|---|---|---|---|
backgroundColor | The color of background | string | #F7F7F7 |
|
className | The class name of the container | string | – | |
drawerProps | Extra props of Drawer Component from antd. visible and onClose have already in FlowBuilder, and {title : “Configuration”, width : 480, destroyOnClose : true, maskClosable : false} |
– | ||
layout | Use vertical or horizontal layout | vertical | horizontal |
vertical |
|
lineColor | The color of line | string | #999999 |
|
registerNodes | The registered nodes | RegisterNode[] | ✓ | – |
spaceX | Horizontal spacing between nodes | number | 16 |
|
spaceY | Vertical spacing between nodes | number | 16 |
|
nodes | The nodes of FlowBuilder | Node[] | ✓ | – |
onChange | Callback function for when the data change | (nodes: Node[], changeEvent?: string ) => void |
✓ | – |
RegisterNode
Property | Description | Type | Required | Default |
---|---|---|---|---|
addIcon | The icon in addable node list (There are already some default icons) | React.ReactNode | – | |
conditionNodeType | The type of condition node | string | – | |
configComponent | The Component of configuring node form | React.FC<ConfigComponent> | – | |
deleteConfirmTitle | The confirmation information before deleting the node. The title of Popconfirm | string | Are you sure to delete this node? |
|
displayComponent | The Component of displaying node | React.FC<DisplayComponent> | – | |
extraData | The extra data of the node | any | – | |
name | The name of node | string | ✓ | – |
type | The type of node, promise start is start node type and end is end node type |
string | ✓ | – |
DisplayComponent
Property | Description | Type | Default |
---|---|---|---|
node | The all information of node | Node | – |
ConfigComponent
Property | Description | Type | Default |
---|---|---|---|
node | The all information of node | Node | – |
onCancel | Called on cancel, used to close the drawer | () => void | – |
onSave | Called on save node data (automatically close the drawer, no need to call onCancel). FlowBuilder will set the validateStatusError property according to validateErrors |
(values: any, validateErrors?: any) => void | – |
Node
Property | Description | Type | Default |
---|---|---|---|
branchs | The condition nodes array of branch node | Node[] | – |
configuring | Whether configuring of node. The display Component can highlight the node according to this property | boolean | – |
data | The data of node | any | – |
extraData | The extra data of node. Same as the extraData of the registered node, not deep clone |
any | – |
id | The unique id of node | string | – |
name | The name of node. Same as the name of the registered node |
string | – |
next | The next flow of condition node | Node[] | – |
path | The full path in FlowBuilder | any[] | – |
type | The type of node. Same as the type of the registered node |
string | – |
validateStatusError | The Component of configuring node form validate failed. The display Component can highlight the node according to this property | boolean | – |