Vertical Visual Picker
avonni-vertical-visual-picker
Displays a vertical list of selectable, richly-styled options for single or multiple selection.
Overview
Vertical Visual Picker is a Lightning Web Component that presents a vertical list of selectable, card-style options—each with a title, description, media, and tags—as a radio or checkbox group.
Use it in your own Lightning Web Components when users must choose one or more options from a set of rich, descriptive items stacked vertically. You supply the items as data; the component handles selection, validation, and an optional show more/less control.
Use Cases
Plan selection: Let users pick a subscription or pricing plan.
Onboarding choices: Present setup options with descriptive context.
Settings: Offer mutually exclusive configuration choices.
Multi-select lists: Use the
checkboxtype to select several options.Guided flows: Stack options vertically in a wizard or form step.
Type Guidelines
radio
Single, mutually exclusive choice (e.g. one plan).
checkbox
Multiple selections; bind value to an array.
Use Case Examples
Example 1: Single plan selection
Scenario: Let users pick one subscription plan from a vertical list, showing two plans initially with a show more button.
Result: A vertical list of plan cards with the "Team" plan selected; only two cards show until the user clicks "Show all plans".
Example 2: Multi-select with checkboxes
Scenario: Allow users to select multiple add-ons.
Result: A checkbox list where users can select several add-ons; change fires with an array of selected values.
Specifications
Attributes
collapsed-show-more-button
The label for the show more button when the items are collapsed.
String
"'Show more'"
disabled
If present, the visual picker is disabled and the user cannot interact with it.
Boolean
false
expanded-show-more-button
The label for the show more button when the items are expanded.
String
"'Show less'"
hide-check-mark
If present, hide the check mark when selected.
Boolean
false
is-loading
If present, a spinner is shown to indicate that more items are loading.
Boolean
false
items
Array of items with attributes populating the vertical visual picker.
VerticalVisualPickerItem[]
—
label
Text label to title the vertical visual picker.
String
—
loading-state-alternative-text
Message displayed while the picker is in the loading state.
String
"'Loading...'"
max
Maximum number of selected items.
Number
Infinity
max-count
Maximum of items allowed in the visible list.
Number
—
message-when-range-overflow
Error message to be displayed when a range overflow is detected.
String
—
message-when-range-underflow
Error message to be displayed when a range underflow is detected.
String
—
message-when-value-missing
Error message to be displayed when the value is missing and input is required.
String
—
min
Minimum number of selected options required.
Number
0
name
The name of the vertical visual picker.
String
—
Yes
required
If present, at least one item must be selected.
Boolean
false
required-alternative-text
The assistive text when the required attribute is set to true.
String
"'Required'"
size
It defines the width of the item. Valid values include small, medium, large and responsive.
String
"medium"
type
It defines the type of input. Valid values include radio and checkbox.
String
"radio"
validity
Represents the validity states that an element can be in, with respect to constraint validation.
String
—
value
Value of the selected item. For the checkbox type, the value can be an array. Ex: [value1, value2], 'value1' or ['value1'].
(string
string[])
—
variant
It changes the appearance of the item when selected. Valid values include coverable and non-coverable.
String
"non-coverable"
Methods
blur
Removes keyboard focus from the input element.
checkValidity
Checks if the input is valid.
focus
Sets focus on the input element.
getErrorMessage
Retrieve the current error message. If it is null than the input is valid.
reportValidity
Displays the error messages and returns false if the input is invalid. If the input is valid, reportValidity() clears displayed error messages and returns true.
setCustomValidity
Sets a custom error message to be displayed when a form is submitted.
message
String
- The string that describes the error. If message is an empty string, the error message is reset.
showHelpMessageIfInvalid
Displays error messages on invalid fields. An invalid field fails at least one constraint validation and returns false when checkValidity() is called.
Custom Events
blur
The event fired when the focus is removed from the vertical visual picker.
The blur event doesn't return any parameters.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
change
The event fired when the value changed.
The change event returns the following parameters.
value
string
string[]
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
focus
The event fired when the focus is set on the vertical visual picker.
The focus event doesn't return any parameters.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
itemclick
The event fired when an item is clicked.
The itemclick event returns the following parameters.
value
string
Clicked item value.
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
itemsvisibilitytoggle
The event fired when the show more/less button is clicked.
The itemsvisibilitytoggle event returns the following parameters.
show
boolean
True if items are currently hidden and the click was meant to show more of them. False if the click was meant to hide the visible items.
visibleItemsLength
number
Length of the currently visible items.
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
true
This event can be canceled. You can call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
blur
The event fired when the focus is removed from the vertical visual picker.
The blur event doesn't return any parameters.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
change
The event fired when the value changed.
The change event returns the following parameters.
value
string
string[]
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
focus
The event fired when the focus is set on the vertical visual picker.
The focus event doesn't return any parameters.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
itemclick
The event fired when an item is clicked.
The itemclick event returns the following parameters.
value
string
Clicked item value.
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
itemsvisibilitytoggle
The event fired when the show more/less button is clicked.
The itemsvisibilitytoggle event returns the following parameters.
show
boolean
True if items are currently hidden and the click was meant to show more of them. False if the click was meant to hide the visible items.
visibleItemsLength
number
Length of the currently visible items.
The event properties are as follows.
bubbles
false
This event does not bubble.
cancelable
true
This event can be canceled. You can call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
loadmore
The event fired when you scroll to the end of the visual picker. This event is fired only if enable-infinite-loading is true.
The loadmore event doesn't return any parameters.
bubbles
false
This event does not bubble.
cancelable
false
This event has no default behavior that can be canceled. You can't call preventDefault() on this event.
composed
false
This event does not propagate outside of the component in which it was dispatched.
Styling Hooks
--avonni-vertical-visual-picker-header-text-color
color
#3e3e3c
--avonni-vertical-visual-picker-header-font-size
font
0.75rem
--avonni-vertical-visual-picker-header-font-style
font
normal
--avonni-vertical-visual-picker-header-font-weight
font
400
--avonni-vertical-visual-picker-title-text-color
color
#080707
--avonni-vertical-visual-picker-title-font-size
font
1.25rem
--avonni-vertical-visual-picker-title-font-style
font
normal
--avonni-vertical-visual-picker-title-font-weight
font
400
--avonni-vertical-visual-picker-title-alignment
alignment
left
--avonni-vertical-visual-picker-description-text-color
color
#3e3e3c
--avonni-vertical-visual-picker-description-font-size
font
0.75rem
--avonni-vertical-visual-picker-description-font-style
font
normal
--avonni-vertical-visual-picker-description-font-weight
font
400
--avonni-vertical-visual-picker-description-alignment
alignment
left
--avonni-vertical-visual-picker-description-line-height
dimension
1.25
--avonni-vertical-visual-picker-figure-color-background
color
#ffffff
--avonni-vertical-visual-picker-figure-color-background-hover
color
#ffffff
--avonni-vertical-visual-picker-figure-color-background-selected
color
#1b96ff
--avonni-vertical-visual-picker-figure-color-border
color
#c9c9c9
--avonni-vertical-visual-picker-figure-color-border-hover
color
#1b96ff
--avonni-vertical-visual-picker-figure-color-border-selected
color
#1b96ff
--avonni-vertical-visual-picker-figure-sizing-border
sizing
1px
--avonni-vertical-visual-picker-figure-styling-border
styling
solid
--avonni-vertical-visual-picker-figure-radius-border
dimension
0.25rem
--avonni-vertical-visual-picker-figure-shadow-box
shadow
0 2px 2px rgb(0 0 0 / 5%)
--avonni-vertical-visual-picker-figure-tags-alignment
alignment
left
--avonni-vertical-visual-picker-sub-items-color-background
color
#f7f9fb
--avonni-vertical-visual-picker-show-more-button-spacing-block-end
dimension
0
--avonni-vertical-visual-picker-show-more-button-spacing-block-start
dimension
0
--avonni-vertical-visual-picker-show-more-button-spacing-inline-end
dimension
1rem
--avonni-vertical-visual-picker-show-more-button-spacing-inline-start
dimension
1rem
--avonni-vertical-visual-picker-show-more-button-color-background
color
#ffffff
--avonni-vertical-visual-picker-show-more-button-color-background-active
color
#f3f3f3
--avonni-vertical-visual-picker-show-more-button-color-background-hover
color
#f3f3f3
--avonni-vertical-visual-picker-show-more-button-color-border
color
#c9c9c9
--avonni-vertical-visual-picker-show-more-button-color-border-active
color
#c9c9c9
--avonni-vertical-visual-picker-show-more-button-color-border-hover
color
#c9c9c9
--avonni-vertical-visual-picker-show-more-button-text-color
color
#0176d3
--avonni-vertical-visual-picker-show-more-button-text-color-active
color
#014486
--avonni-vertical-visual-picker-show-more-button-text-color-hover
color
#014486
--avonni-vertical-visual-picker-show-more-button-radius-border
dimension
0.25rem
--avonni-vertical-visual-picker-show-more-button-sizing-border
sizing
1px
--avonni-vertical-visual-picker-help-message-height
dimension
0px
--avonni-vertical-visual-picker-legend-height
dimension
0px
Key Considerations
Required field:
nameis required; bindvalueto component state to control selection.Type and value: For
checkbox,valueis an array; forradioit is a single string.Disabled items: Set
disabled: trueon an individual item to prevent its selection.Show more:
max-countlimits visible items and reveals the show more button; it is ignored when infinite loading is enabled.Validation: Use
required,min, andmaxwith the message-when attributes to enforce selection rules.Best Practice: Set
nameand bindvalueto component state so selection persists, and userequiredwithmessage-when-value-missingfor form steps.
Troubleshooting Common Issues
No selection persists: Bind
valueto a tracked property and update it in thechangehandler.Show more button missing: Confirm
max-countis less than the number of items.Checkbox value errors: For
checkboxtype, ensurevalueis an array, not a string.If issues persist: Contact our support team at [email protected] for assistance.
Last updated
Was this helpful?
