Free cookie consent management tool by TermsFeed

Wizard Layout

On This Page
SAIL Design System guidance available for Wizard Layout

When you want to display complex, multi-step forms, use the wizard layout. Learn how to use the wizard layout to organize forms into seamless, easy-to-use steps.

Function

a!wizardLayout( titleBar, isTitleBarFixed, showTitleBarDivider, backgroundColor, style, showWhen, steps, contentsWidth, showStepHeadings, focusOnFirstInput, primaryButtons, secondaryButtons, showButtonDivider, isButtonFooterFixed )

Displays a multi-step form with a step indicator. Use this as the top-level layout for complex forms to organize inputs into steps. Reference information about wizard steps using fv!activeStepIndex, fv!isFirstStep, and fv!isLastStep.

Use a!wizardStep() to define each step in the wizard.

wizard layout example

See also: Form Layout

Parameters

Name Keyword Types Description

Title Bar

titleBar

Any

Prominent text that includes a title and optional secondary text. Can be styled using templates or billboard and card layouts. Configure using text, a!headerTemplateSimple(), a!headerTemplateFull() or a!headerTemplateImage(), a single a!billboardLayout() or a!cardLayout(), or an array of both layouts.

Fix title bar when scrolling

isTitleBarFixed

Boolean

Determines whether the title bar remains at the top of the wizard when scrolling. In Appian Mobile, the title bar is never fixed. Default: If the parameter isn't specified, the title bar is not fixed. If the parameter isn’t specified and the wizard is in a dialog, the title bar is fixed.

Show title bar divider

showTitleBarDivider

Boolean

Determines whether to display a divider line to separate the title bar from the rest of the wizard. Default: If the parameter isn't specified, the divider is hidden. If the parameter isn’t specified and the wizard is in a dialog, the divider displays.

Background Color

backgroundColor

Text

The background color for the wizard. Valid values: Any valid hex color or "WHITE" (default), "TRANSPARENT", "CHARCOAL_SCHEME", "NAVY_SCHEME", "PLUM_SCHEME".

Style

style

Text

Determines the orientation and style of the wizard step indicator. Valid values: "DOT_VERTICAL” (default), "DOT_HORIZONTAL", "CHEVRON_VERTICAL", "CHEVRON_HORIZONTAL", "LINE_VERTICAL", "LINE_HORIZONTAL", "MINIMAL".

Show When

showWhen

Boolean

Determines whether the layout is displayed on the interface. When set to false, the layout is hidden and is not evaluated. Default: true.

Wizard Steps

steps

List of Variant

Steps to display in the wizard, configured as a list of a!wizardStep().

Step Contents Width

contentsWidth

Text

Determines the width of the wizard step contents. Valid values: “EXTRA_NARROW”, "NARROW", "MEDIUM", "WIDE", "FULL" (default).

Show step headings

showStepHeadings

Boolean

Determines whether wizard step labels show as headings above the step contents. The labels still appear in milestones, if a milestone style is used as the wizard step indicator. Default: true.

Automatically focus on first input

focusOnFirstInput

Boolean

Determines whether to automatically focus on the first input when the wizard loads or when the wizard step changes. Default: true.

Primary Buttons

primaryButtons

List of Variant

Array of primary buttons created with a!buttonWidget(). The Next button is added automatically and can’t be configured.

Secondary Buttons

secondaryButtons

List of Variant

Array of secondary buttons created with a!buttonWidget(). The Back button is added automatically and can’t be configured.

Show button divider

showButtonDivider

Boolean

Determines whether to display a divider line above the buttons. Default: If the parameter isn't specified, the divider is hidden. If the parameter isn’t specified and the wizard is in a dialog, the divider displays.

Fix buttons to bottom of wizard

isButtonFooterFixed

Boolean

Determines whether the buttons are fixed to the bottom of the wizard. In Appian Mobile, the buttons are never fixed. Default: If the parameter isn't specified, the title bar is not fixed. If the parameter isn't specified and the wizard is in a dialog, the title bar is fixed.

Usage considerations

Title bar options

Related style guidelines: Title bar guidelines

For the title bar, you can choose either a simple header, full header, image header or sidebar template. See the SAIL Design System for more information about when to choose each template.

header-template-compare.png

You can also just enter text as a string. For example, titleBar: "Add Product".

Additionally, you can configure a custom header using billboard and card layouts.

Contents width in record action dialogs

Related style guidelines: Use "Full" width when displaying forms in dialogs, Use one narrow column for the form content, Don't add additional columns to center form content

If you are planning to display this component in a record action dialog, keep in mind that the dialog size is set in the record type and that the step contents width is set in the wizard layout. Open the record action to make sure the contents width works with the selected dialog size.

We recommend setting the contentsWidth parameter to "FULL" when displaying this component in a dialog.

Dynamic defaults

Some parameters have dynamic defaults that automatically adapt based on if they are displayed in a dialog or not.

The following table details the behavior of these parameters when they are not specified in the expression.

Specifying any of these parameters in the expression will override this behavior.

Parameter In a dialog In a page
contentsWidth Full Narrow
isTitleBarFixed
isButtonFooterFixed
Fixed Not fixed
showTitleBarDivider
showButtonDivider
Visible Hidden

Using the focusOnFirstInput parameter

If focusOnFirstInput is true, the focus will be applied to the first component that is one of the following:

Selecting a wizard style

When you select a wizard style, you choose the appearance and location of the milestone. Vertical styles display a milestone to the side of the wizard step contents, and horizontal styles display a milestone above the wizard step contents.

In general, you should use a vertical style if your wizard a large number of steps, since too many steps in a horizontal milestone can appear crowded and hard to understand. You should also use a vertical style if your step contents are very tall, to minimize the need to scroll within the wizard.

If you don't want to display the milestone, select "MINIMAL" to show the step number above the contents instead (for example, "Step 1 of 2").

On smaller screens, wizards will responsively display a minimal milestone style.

Wizard buttons

In a wizard layout, the Next and Back buttons are added automatically and can't be configured. If you drag and drop the wizard layout into an interface, Submit and Cancel buttons are also added automatically.

You can use the disableNextButton parameter in a!wizardStep() specify when the Next button is disabled for a user on a step.

You can add more buttons to your wizard with the primaryButtons and secondaryButtons parameters. When you add more primary buttons, they appear next to the Next button. When you add more secondary buttons, they appear next to the Back button.

For more information about wizard buttons, see the wizard style guidelines.

screenshot of primary and secondary buttons

Function variables

The following function variables can be used anywhere within the wizard layout to reference information about wizard steps:

Function Variable Type Description
fv!activeStepIndex Integer The current step's index in the steps array.
fv!isFirstStep Boolean True for the first step in the step array, otherwise false.
fv!isLastStep Boolean True for the last step in the steps array, otherwise false.

fv!isFirstStep and fv!isLastStep will not be true for hidden wizard steps. For example, if you configured four wizard steps (A, B, C, and D), and the showWhen parameter for step D is false, then fv!isLastStep will be true for step C.

Hidden wizard steps are still counted by fv!activeStepIndex to determine the step's index.

Using sidebar template with wizard layout

Vertical milestone behavior in sidebar

When using a sidebar template in an a!wizardLayout() with a vertical milestone, the milestone steps will automatically be moved into the sidebar, appearing below the secondaryText and above any additionalContents.

When the sidebar's responsive behavior causes it to display as a header, the milestone will display below the header using the "MINIMAL" style.

image of a wizard layout that uses the sidebar template

Responsiveness of sidebar

Related style guidelines: Sidebar template guidelines

The sidebar is fully responsive and its appearance will change based on the screen width.

On narrow screens, the sidebar automatically displays as a header at the top of the interface. This includes when it displays in dialogs that use Medium width or narrower.

When the sidebar displays as a header, the image is hidden, but any components in the additionalContents parameter will still be displayed below the secondary text.

Sidebar on a wider screen:

a sidebar layout on a wider screen

Sidebar on a narrower screen:

a sidebar layout on a narrower screen

Heading levels for headingTag parameters

In wizard layouts, the title bar title uses "H1" and the wizard step titles use "H2" for the heading level. When you use the headingTag parameter in components such as box and section layouts, use "H3" for the highest-level headings.

Async loading placeholder

If a wizard step relies on an async variable, a placeholder will be displayed for the wizard step contents until the async data is finished loading. See a!asyncVariable() for more information on how the placeholder behavior works.

Appian Mobile considerations

On Appian Mobile, the style parameter is ignored. Wizard layouts viewed in Appian Mobile use the default "LINE" style.

Examples

To experiment with examples, copy and paste the expression into an interface object.

Wizard with three steps

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
a!wizardLayout(
  titleBar: a!headerTemplateFull(
    title: "Request a Quote",
    secondaryText: "Customize your coverage",
    backgroundColor: "#434343"
  ),
  isTitleBarFixed: false,
  showTitleBarDivider: false,
  style: "DOT_VERTICAL",
  steps: {
    a!wizardStep(
      label: "About You",
      instructions: "Tell us about yourself",
      contents: {
        a!columnsLayout(
          columns: {
            a!columnLayout(
              contents: {
                a!textField(
                  label: "First Name",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!textField(
                  label: "Last Name",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            )
          }
        ),
        a!columnsLayout(
          columns: {
            a!columnLayout(
              contents: {
                a!textField(
                  label: "Email",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!integerField(
                  label: "Phone",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!checkboxField(
                  choiceLabels: {"Email Me", "Text Me"},
                  choiceValues: {1, 2},
                  label: "Contact Preference",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  choiceLayout: "COMPACT",
                  validations: {}
                )
              }
            )
          }
        ),
        a!textField(
          label: "Street Address",
          labelPosition: "ABOVE",
          saveInto: {},
          refreshAfter: "UNFOCUS",
          validations: {}
        ),
        a!columnsLayout(
          columns: {
            a!columnLayout(
              contents: {
                a!textField(
                  label: "City",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!dropdownField(
                  choiceLabels: {"Option 1", "Option 2", "Option 3", "Option 4",
                                  "Option 5", "Option 6", "Option 7", "Option 8",
                                  "Option 9", "Option 10", "Option 11", "Option 12"},
                  choiceValues: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12},
                  label: "State",
                  labelPosition: "ABOVE",
                  placeholder: "Select state",
                  saveInto: {},
                  searchDisplay: "AUTO",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!integerField(
                  label: "Zip Code",
                  labelPosition: "ABOVE",
                  saveInto: {},
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            )
          }
        )
      }
    ),
    a!wizardStep(
      label: "Coverage Options",
      contents: {}
    ),
    a!wizardStep(
      label: "Quote",
      contents: {}
    )
  },
  contentsWidth: "FULL",
  primaryButtons: {
    a!buttonWidget(
      label: "Submit",
      submit: true,
      style: "SOLID",
      loadingIndicator: true,
      showWhen: fv!isLastStep
    )
  },
  secondaryButtons: {
    a!buttonWidget(
      label: "Cancel",
      value: true,
      saveInto: {},
      submit: true,
      style: "LINK",
      validate: false
    )
  }
)

Displays the following:

screenshot of a wizard with three steps

Feature compatibility

The table below lists this component's compatibility with various features in Appian.
Feature Compatibility Note
Portals Compatible
Offline Mobile Compatible
Sync-Time Custom Record Fields Incompatible
Real-Time Custom Record Fields Incompatible

Custom record fields that evaluate in real time must be configured using one or more Custom Field functions.

Process Reports Incompatible

Cannot be used to configure a process report.

Process Events Incompatible

Cannot be used to configure a process event node, such as a start event or timer event.

Process Autoscaling Incompatible

Cannot be used in autoscaled processes.

The following recipes include usage of the Wizard Layout.

Feedback