In addition to rendering forms, this library can also be used to render complex wizard workflows.
Wizards work by taking the root Panel components within a normal flat form, and turning those panels into separate pages that can be added to a workflow. You can also provide conditional logic on those panel components so that the pages are conditionally shown based on what is entered within the wizard flow.
The determination on whether a form is a wizard or not is based on the display property on the form schema like so.
{
"title": "My Wizard",
"type": "form",
"display: "wizard",
"components": [
{
"type": "panel",
"title": "Page 1",
"components": [
...
...
]
},
{
"type": "panel",
"title": "Page 2",
"components": [
...
...
]
}
]
}
You can create a new wizard just like you can a normal form.
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css"
/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdn.form.io/js/formio.embed.js"></script>
<div id="wizard"></div>
Formio.createForm(document.getElementById('wizard'), 'https://examples.form.io/wizard').then(
function (wizard) {
wizard.on('nextPage', function (page) {
console.log(page);
});
wizard.on('submit', function (submission) {
console.log(submission);
});
},
);
<div id="wizard"></div>
You can also add options when creating a form, the following options are supported:
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/bootstrap-icons/font/bootstrap-icons.css"
/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdn.form.io/js/formio.embed.js"></script>
<div id="wizardWithOptions"></div>
Formio.createForm(document.getElementById('wizardWithOptions'), 'https://examples.form.io/wizard', {
breadcrumbSettings: { clickable: false },
buttonSettings: { showCancel: false },
}).then(function (wizard) {
wizard.on('nextPage', function (page) {
console.log(page);
});
wizard.on('submit', function (submission) {
console.log(submission);
});
});
<div id="wizardWithOptions"></div>