Wizards
Purpose
Users need guidance filling out a complex form.
Description
Splitting a complex form into multiple steps accomplishes a few things:
- Reduces cognitive overhead by organizing and presenting related input fields
- Facilitates a potentially linear or evolving process
- Can provide improved contextual or evolving help
Basic functionality
A wizard is usually composed of:
- A list of steps, either horizontally or vertically
- A collection of form controls and help text organized into steps
- Buttons for navigation
- Validation
Steps
In many cases it’s beneficial to show the list of steps a wizard will have. Depending on the number of steps and space available.
Validation
-
Indicate a step’s validity
- Show a check icon when valid (only if the user has left/submitted the form with valid input)
- Show a warning icon when invalid (only if the user has left/submitted the form with errors)
Navigation
- Allow for navigating to previous steps when possible
- In some cases, skipping ahead is applicable
- Navigation may evolve depending on previous steps
Horizontal steps
Use horizontal steps when there are 4 or less steps.
- Applicant information completed
- Mark information
- Goods and services not completed
So far so good. Now, let's talk about your mark.
First, what type of mark is this?
<!-- Horizontal steps-->
<div
class="usa-step-indicator usa-step-indicator--counters-sm usa-step-indicator--center"
aria-label="progress"
>
<ol class="usa-step-indicator__segments">
<li
class="usa-step-indicator__segment usa-step-indicator__segment--complete"
>
<span class="usa-step-indicator__segment-label"
>Applicant information <span class="usa-sr-only">completed</span></span
>
</li>
<li
class="usa-step-indicator__segment usa-step-indicator__segment--current"
aria-current="true"
>
<span class="usa-step-indicator__segment-label">Mark information </span>
</li>
<li class="usa-step-indicator__segment">
<span class="usa-step-indicator__segment-label"
>Goods and services <span class="usa-sr-only">not completed</span></span
>
</li>
</ol>
</div>
<h2 class="text-center mb-4">
So far so good. Now, let's talk about your mark.
</h2>
<h4 class="mb-3">First, what type of mark is this?</h4>
<!-- learn more links -->
<form>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="exampleRadios"
id="exampleRadios1"
value="option1"
checked
/>
<label class="form-check-label" for="exampleRadios1">
Standard characters
</label>
<small class="form-text text-muted">
Use this option to register a mark that is comprised of word(s),
letter(s), number(s), or any combination thereof with no design element or
stylization. <a href="#">Learn more.</a>
</small>
</div>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="exampleRadios"
id="exampleRadios2"
value="option2"
/>
<label class="form-check-label" for="exampleRadios2"> Special form </label>
<small class="form-text text-muted">
Use this option if you wish to register a mark that is comprised of
stylized word(s), letter(s), and/or number(s), and/or a design element.
<a href="#">Learn more.</a>
</small>
</div>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name="exampleRadios"
id="exampleRadios3"
value="option3"
/>
<label class="form-check-label" for="exampleRadios3"> Sound mark </label>
<small class="form-text text-muted">
A non-visual mark may be a sound, a scent, or otherwise non-visual mark.
<a href="#">Learn more.</a>
</small>
</div>
<div class="text-right mt-4">
<button class="btn btn-outline-primary">Back</button>
<button class="btn btn-primary">Continue</button>
</div>
</form>
Buttons
Buttons for a wizard can vary depending on the need. The primary actions should be on the right, the secondary actions should be on the left.
Last saved 02/07/21 10:45 AM
<!-- Button wizards -->
<div class="row">
<div class="col-12 mb-3">
<button class="btn btn-primary float-right">Continue</button>
</div>
<div class="col-12 mb-3 text-right">
<hr />
<button class="btn btn-outline-primary">Back</button>
<button class="btn btn-primary">Continue</button>
</div>
<div class="col-12 mb-3 text-right">
<hr />
<button class="btn btn-outline-primary">Back</button
><button class="btn btn-outline-primary float-left">Cancel</button>
<button class="btn btn-primary">Continue</button>
</div>
<div class="col-12 mb-3 text-right text-right">
<hr />
<button class="btn btn-outline-primary">Back</button
><button class="btn btn-outline-primary float-left">Cancel</button>
<button class="btn btn-outline-primary">Save</button>
<button class="btn btn-primary">Continue</button>
</div>
</div>
<p class="text-right mb-3 text-muted">Last saved 02/07/21 10:45 AM</p>