Free cookie consent management tool by TermsFeed

Checkbox Component

On This Page

Function

a!checkboxField( label, instructions, required, disabled, choiceLabels, choiceValues, value, validations, saveInto, validationGroup, requiredMessage, align, labelPosition, helpTooltip, choiceLayout, accessibilityText, showWhen, choiceStyle, spacing, data, sort, marginAbove, marginBelow, choicePosition )

Displays a limited set of choices from which the user may select none, one, or many items and saves the values of the selected choices.

To save the index of the choice instead of a value, use checkboxes by index.

To capture a single true or false value, such as agreeing to terms and conditions, use a boolean checkbox.

If the choice is exclusive, then consider using radio buttons or a dropdown.

If there are many choices, the component grows as large as necessary to display all the options. If a more compact presentation is desirable, consider using a multiple dropdown.

Parameters

Name Keyword Types Description

Label

label

Text

Text to display as the field label.

Instructions

instructions

Text

Supplemental text about this field.

Required

required

Boolean

Determines if a value is required to submit the form. Default: false.

Disabled

disabled

Boolean

Determines if the field should display as potentially editable but grayed out. Default: false.

Choice Labels

choiceLabels

List of Variant

Array of options for the user to select. When the data source is a record type, use a record type reference to specify a record field or related record field. To format a record field or display multiple record fields, use fv!data and a record field reference. For example, fv!data[recordType!Order.fields.city] & ", " & fv!data[recordType!Order.fields.state]

Choice Values

choiceValues

List of Variant

Array of values associated with the corresponding choices. When the data source is a record type, this is a record field (usually the primary key field).

Display Value

value

List of Variant

Values of choices to display as selected.

Validations

validations

List of Text String

Validation errors to display below the field when the value is not null.

Save Input To

saveInto

List of Save

One or more variables that are updated with the choice values when the user changes the selections. Use a!save() to save a modified or alternative value to a variable.

Validation Group

validationGroup

Text

When present, the requiredness of the field is only evaluated when a button in the same validation group is pressed. The value for this parameter cannot contain spaces. For example, “validation group” is not a valid value. You need to add an underscore between words: “validation_group”. See the following recipes for more information:

Required Message

requiredMessage

Text

Custom message to display when the field's value is required and not provided.

Alignment

align

Text

Determines alignment of choice labels. Appian recommends this setting only be used inside the Grid Layout component. Valid values: "LEFT", "CENTER", "RIGHT".

Label Position

labelPosition

Text

Determines where the label appears. Valid values:

  • "ABOVE" (default) Displays the label above the component.
  • "ADJACENT" Displays the label to the left of the component.
  • "COLLAPSED" Hides the label. The label will still be read by screen readers; see accessibility considerations for more information.
  • "JUSTIFIED" Aligns the label alongside the component starting at the edge of the page.

Help Tooltip

helpTooltip

Text

Displays a help icon with the specified text as a tooltip. The tooltip displays a maximum of 500 characters. The help icon does not show when the label position is "COLLAPSED".

Choice Layout

choiceLayout

Text

Determines the layout. Valid values: "STACKED" (default), "COMPACT".

Accessibility Text

accessibilityText

Text

Additional text to be announced by screen readers. Used only for accessibility; produces no visible change.

Show When

showWhen

Boolean

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

Choice Style

choiceStyle

Text

Determines how the choices should be displayed on the interface. Valid values: "STANDARD" (default), "CARDS".

Spacing

spacing

Text

Determines the space between the options. Valid values: "STANDARD" (default), "MORE", "EVEN_MORE".

Data Source

data

Any

The record type used as the source of the component's choices. This can be specified with a record type reference or a!recordData().

Sort

sort

List of SortInfo

Array of Sort Info configurations created with a!sortInfo(). When the data source is a record type, you can use the value "choiceLabels" or "choiceValues" in the a!sortInfo() function to sort by the values in that parameter. For example, a!sortInfo(field: "choiceLabels", ascending: false)

Margin Above

marginAbove

Text

Determines how much space is added above the component. Valid values: "NONE" (default), "EVEN_LESS", "LESS", "STANDARD" , "MORE", "EVEN_MORE".

Margin Below

marginBelow

Text

Determines how much space is added below the component. Valid values: "NONE", "EVEN_LESS", "LESS", "STANDARD" (default), "MORE", "EVEN_MORE".

Choice Position

choicePosition

Text

Determines whether radio buttons appear on the left or right of the choice labels. Valid values: "START", "END". Auto default: Uses "START" for "STANDARD" choiceStyle and "END" for "CARDS" choiceStyle.

Usage considerations

Saving values

  • If a single item is selected, the system saves a single-item array.
  • If no selection is made, the system saves a null value into the component's saveInto field.

Using the choiceLayout, choiceStyle, and choicePosition parameters

See the SAIL Design System for choice best practices.

Using the choiceLabels and choiceValue parameters

When configuring the Choice Labels and Choice Values parameters, keep the following in mind:

  • The Choice Labels cannot be null.
  • The Choice Values cannot contain nulls or duplicate values.
  • The Choice Labels list and Choice Values list must be the same length.

When you select Record Type as the data source, the Choice Labels and Choice Values are automatically populated with record field references. By default, the labels will be the first text field from the record type, and the values will be the primary key field.

You can format and display multiple record fields in the Choice Labels parameter using fv!data and a record field reference. For example, if you want to display a list of US cities with their states in parentheses, you could use the following expression:

1
choiceLabels: fv!data[recordType!Location.fields.city] & " (" & fv!data[recordType!Location.fields.state] & ")"

This would display choice labels as:

1
2
3
4
5
New York City (New York)
Los Angeles (California)
Chicago (Illinois)
Houston (Texas)
Phoenix (Arizona)

Note:  You cannot reference related record fields with fv!data in the Choice Labels parameter. Instead, you should create a component using the related record type as the source to display that data in the Choice Labels parameter.

Handling duplicate values in records-powered components

In a records-powered checkbox component, the fields used in the choiceValue and choiceLabels parameters determine how duplicate values are handled.

Automatically remove duplicate values

When you use the same record field for the choiceValue and choiceLabels parameters, any duplicate field values are automatically removed from the list of options.

For example, let’s say you use an Employee record type as the source of a checkbox component. The record type has a department field with the following values:

  • Sales
  • Engineering
  • Sales
  • Marketing
  • Engineering

If you set both choiceValue and choiceLabels to the department field, the checkbox component will automatically filter this list to show only the unique values:

  • Engineering
  • Marketing
  • Sales

Display all values, including duplicates

To display all values in the component, including duplicate values, you must provide a unique choice value for each choice label.

For example, let’s say you use an Employee record type as the source of a checkbox component and there are two employees named “Olivia Smith.”

To show two different employees both named "Olivia Smith," you would configure the parameters as:

  • choiceValue: recordType!Employee.fields.id (This provides a unique value for each employee)
  • choiceLabels: recordType!Employee.fields.displayName (This displays the employee's name)

Because each "Olivia Smith" has a unique ID in the choiceValue, the checkbox component will list both of them as distinct selectable options.

Sort choices

The way you sort the choices depends on the source of the component. If no sort is applied, the labels will appear in the order they're provided.

When you select Record Type as the data source:

  • The choice order is determined by the Sort parameter.
  • You can automatically sort by the values configured in the Choice Labels or Choice Values parameters by using "choiceLabels" or "choiceValues" in the a!sortInfo() function.

    For example, a!sortInfo(field: “choiceLabels”, ascending: true) would automatically sort the choices by the values in the Choice Labels parameter.

When you select Other as the data source:

  • The choices display in the order defined in the Choice Labels.

Row limit for records-powered components

Interface components that use a record type as the data source are known as records-powered components.

Records-powered components can display a maximum of 5,000 rows. As a best practice, you should not display all 5,000 rows in a component since it may impact performance.

Query timeout for records-powered components

Queries to synced and unsynced record types will timeout after 65 seconds. If you are querying large volumes of data, this may cause the interface or expression to error.

To resolve timeout errors, reduce the amount of data in your query by:

  • Reducing the batch size.
  • Limiting the number of fields returned.
  • Applying more specific filters.

Some complex queries may result in reduced performance. Ensure you're following query best practices.

Examples

Checkbox with first and third values checked

Use the interactive editor below to test out the example code.

a!localVariables( local!language: {"en_US", "fr_FR"}, a!checkboxField( label: "Language", instructions: "In which languages are you proficient?", choiceLabels: { "English", "Spanish", "French", "German" }, choiceValues: { "en_US", "es_ES", "fr_FR", "de_DE" }, value: local!language, saveInto: local!language ) )

Checkbox with no default values checked

Use the interactive editor below to test out the example code.

a!localVariables( local!language: null, a!checkboxField( label: "Language", instructions: "In which languages are you proficient?", choiceLabels: { "English", "Spanish", "French", "German" }, choiceValues: { "en_US", "es_ES", "fr_FR", "de_DE" }, value: local!language, saveInto: local!language ) )

Checkbox with cards style

a!localVariables( local!selected, { a!checkboxField( label: "Reason(s) for appointment", labelPosition: "ABOVE", choiceLabels: { "Cough", "Sore throat", "Congestion", "Body aches", "Nausea", "Fever" }, choiceValues: { "Cough", "Sore throat", "Congestion", "Body ache", "Nausea", "Fever" }, value: local!selected, saveInto: {local!selected}, choiceStyle: "CARDS", validations: {} ) } )

Checkbox with choices from a record type

In this example, imagine you are building a form that lets users create an order. The Order record type has a one-to-many relationship with an Order Line record type. The product for each order line is represented by the itemId field.

We'll use the checkbox component so users can add multiple items to their order. The component's choices are retrieved from a Product record type. choiceLabels uses the name field and the corresponding choiceValues are set using the record type's primary key field, id.

1
2
3
4
5
6
7
8
a!checkboxField(
  data: recordType!AT Product,
  choiceLabels: recordType!AT Product.fields.name,
  choiceValues: recordType!AT Product.fields.id,
  label: "Products",
  value: local!products,
  saveInto: local!products,
)

As the user selects products, the corresponding values are saved to the local!products variable. When they are finished making selections, we can add their selections to the rule input that is passed to a process model. The user will click a button to submit the order, and we can use that interaction to finish constructing the rule input. In the button component's saveInto parameter, we'll use a!forEach() to iterate over the local!products list and save each value as the itemId of an Order Line.

1
2
3
4
5
6
7
8
9
10
11
12
13
a!buttonWidget(
  label: "Submit order",
  value: local!items,
  saveInto: a!forEach(
    local!products,
    a!save(
      ri!order[recordType!RE Order.relationships.orderLine][fv!index][recordType!RE Order Line.fields.itemId],
      fv!item
    )
  ),
  style: "OUTLINE",
  submit: true
)

Feature compatibility

The table below lists this component's compatibility with various features in Appian.
Feature Compatibility Note
Portals Compatible
Offline Interfaces 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.

Event Consumer Filter Conditions Compatible

Can be used in filter conditions.

Event Consumer Event Handlers Compatible

Can be used in event handler expressions.

Old versions

There are older versions of this interface component. You can identify older versions by looking at the name to see if there is a version suffix. If you are using an old version, be sure to refer to the corresponding documentation from the list below.

Old Versions Reason for Update
a!checkboxField_23r3

Added the ability to use record field values as checkbox choices.

To learn more about how Appian handles this kind of versioning, see the Function and Component Versions page.

The following recipes include usage of the Checkbox Component.

Feedback