0.19.3 • Published 2 months ago

sequential-workflow-designer-react v0.19.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 months ago

Sequential Workflow Designer for React

Sequential Workflow Designer for React

Build Status License: MIT View this project on NPM

React wrapper for the Sequential Workflow Designer component.

🚀 Installation

Install the following packages by NPM command:

npm i sequential-workflow-designer sequential-workflow-designer-react

Add CSS files to your app:

import 'sequential-workflow-designer/css/designer.css';
import 'sequential-workflow-designer/css/designer-light.css';
import 'sequential-workflow-designer/css/designer-dark.css';

🎬 Usage

Import types:

import {
  Definition,
  ToolboxConfiguration,
  StepsConfiguration,
  ValidatorConfiguration
} from 'sequential-workflow-designer';
import {
  SequentialWorkflowDesigner,
  wrapDefinition,
  useRootEditor,
  useStepEditor
} from 'sequential-workflow-designer-react';

Create or load your definition of a workflow.

const startDefinition: Definition = { /* ... */ };

Wrap the start definition and memorize it.

const [definition, setDefinition] = useState(() => wrapDefinition(startDefinition));

Configure the designer.

const toolboxConfiguration: ToolboxConfiguration = useMemo(() => ({ /* ... */ }), []);
const stepsConfiguration: StepsConfiguration = useMemo(() => ({ /* ... */ }), []);
const validatorConfiguration: ValidatorConfiguration = useMemo(() => ({ /* ... */ }), []);

Create the root editor component:

function RootEditor() {
  const { properties, setProperty, definition, isReadonly } = useRootEditor();

  function onSpeedChanged(e) {
    setProperty('speed', e.target.value);
  }

  return (
    <>
      <h3>Speed</h3>
      <input value={properties['speed'] || ''} onChange={onSpeedChanged} />
    </>
  );
}

Create the step editor component:

function StepEditor() {
  const { type, componentType, name, setName, properties, setProperty, definition, isReadonly } = useStepEditor();

  function onNameChanged(e) {
    setName(e.target.value);
  }

  return (
    <>
      <h3>Name</h3>
      <input value={name} onChange={onNameChanged} />
    </>
  );
}

At the end attach the designer.

<SequentialWorkflowDesigner
  definition={definition}
  onDefinitionChange={setDefinition}
  stepsConfiguration={stepsConfiguration}
  validatorConfiguration={validatorConfiguration}
  toolboxConfiguration={toolboxConfiguration}
  controlBar={true}
  contextMenu={true}
  rootEditor={<RootEditor />}
  stepEditor={<StepEditor />}>
  />

You can hide any UI component.

<SequentialWorkflowDesigner
  // ...
  toolboxConfiguration={false}
  controlBar={false}
  contextMenu={false}
  rootEditor={false}
  stepEditor={false}>
  />

Check the demo project.

💡 License

This project is released under the MIT license.

0.19.3

2 months ago

0.19.2

2 months ago

0.19.1

2 months ago

0.19.0

2 months ago

0.18.5

3 months ago

0.18.4

3 months ago

0.18.3

3 months ago

0.18.2

3 months ago

0.18.1

4 months ago

0.18.0

5 months ago

0.16.10

6 months ago

0.17.0

6 months ago

0.16.3

7 months ago

0.16.4

7 months ago

0.16.5

7 months ago

0.16.6

7 months ago

0.16.7

7 months ago

0.16.8

7 months ago

0.16.9

7 months ago

0.16.1

7 months ago

0.16.2

7 months ago

0.16.0

7 months ago

0.15.4

8 months ago

0.13.6

9 months ago

0.13.7

9 months ago

0.13.8

8 months ago

0.10.3

8 months ago

0.13.0

11 months ago

0.14.0

9 months ago

0.13.1

11 months ago

0.15.0

8 months ago

0.14.1

9 months ago

0.13.2

11 months ago

0.14.2

8 months ago

0.13.3

10 months ago

0.15.2

8 months ago

0.13.4

10 months ago

0.15.3

8 months ago

0.13.5

10 months ago

0.10.0

1 year ago

0.11.0

12 months ago

0.10.1

1 year ago

0.9.0

1 year ago

0.8.1

1 year ago

0.5.4

1 year ago

0.12.0

12 months ago

0.10.2

1 year ago

0.8.0

1 year ago

0.5.3

1 year ago

0.9.2

1 year ago

0.9.1

1 year ago

0.7.0

1 year ago

0.6.0

1 year ago

0.5.2

1 year ago