Feliz.ReactFlow
Feliz.ReactFlow copied to clipboard
Feliz React Binding for ReactFlow
trafficstars
Feliz Binding for ReactFlow
Installation
Install the nuget package
dotnet paket add Feliz.ReactFlow
and install the npm package
npm install --save react-flow-renderer
or use Femto:
femto install Feliz.ReactFlow
Start test app
- Start your test app by cloning this repository and then execute:
dotnet run
Example ReactFlow
Here is an example ReactFlow
div [ Props.Style [
Props.CSSProp.Height 1000
] ] [
ReactFlow.flowChart [
ReactFlow.elements [|
ReactFlow.node [
node.id "1"
node.nodetype Input
node.data {| label = "Erdgas Einsatz" |}
node.style [
style.background "yellow"
style.color "#332"
style.border "1px solid #222138"
style.width 180
]
node.position (50, 30)
]
ReactFlow.node [
node.id "2"
node.nodetype Default
node.data {| label = "CityCube" |}
node.style [
style.background "#2e88c9"
style.color "white"
style.border "1px solid #222138"
style.width 180
]
node.position (400, 30)
]
ReactFlow.node [
node.id "3"
node.nodetype Output
node.data {| label = "Strom Absatz" |}
node.style [
style.background "lightblue"
style.color "#333"
style.border "1px solid #222138"
style.width 180
]
node.position (300, 200)
]
ReactFlow.node [
node.id "4"
node.nodetype Output
node.data {| label = "Wärme Absatz" |}
node.style [
style.background "red"
style.color "white"
style.border "1px solid #222138"
style.width 180
]
node.position (500, 200)
]
ReactFlow.node [
node.id "5"
node.nodetype (Custom "test")
node.data {| label = "Test" |}
node.position (50, 120)
node.style [
style.background "lightgreen"
style.border "1px solid black"
style.width 180
]
]
ReactFlow.edge [
edge.id "e1-2"
edge.source "1"
edge.target "2"
edge.animated false
edge.label "100 MWh"
edge.edgeType SmoothStep
edge.arrowHeadType ArrowClosed
edge.style [ style.stroke "blue" ]
edge.labelStyle [
labelStyle.fill "black"
labelStyle.fontWeight 700
]
]
ReactFlow.edge [
edge.id "e2-3"
edge.source "2"
edge.target "3"
edge.animated true
edge.label "50 MWh"
edge.edgeType SmoothStep
edge.arrowHeadType ArrowClosed
edge.style [ style.stroke "blue" ]
edge.labelStyle [
labelStyle.fill "blue"
labelStyle.fontWeight 700
]
]
ReactFlow.edge [
edge.id "e2-4"
edge.source "2"
edge.target "4"
edge.animated true
edge.label "55 MWh"
edge.edgeType SmoothStep
edge.arrowHeadType ArrowClosed
edge.style [ style.stroke "red" ]
edge.labelStyle [
labelStyle.fill "red"
labelStyle.fontWeight 700
]
]
ReactFlow.edge [
edge.id "e1-5"
edge.source "1"
edge.target "5"
edge.edgeType SmoothStep
edge.style [ style.stroke "black" ]
]
|]
ReactFlow.onElementClick
(fun ev element ->
console.log ev
window.alert "You clicked me!")
ReactFlow.onNodeDragStop
(fun ev node ->
console.log ev
window.alert "You dragged me!")
ReactFlow.onElementsRemove
(fun elements ->
console.log elements
window.alert "You removed me!")
ReactFlow.onConnect
(fun ev ->
console.log ev
window.alert "You connected me!")
ReactFlow.onConnectStart
(fun ev nodeId ->
console.log ev
window.alert "You started to connect me!")
]
]