Dropdown creates a dropdown menu, with optional sections, headings, icons, checkbox items, radio group items and disabled items.
Submenus are supported but should be avoided where possible for usability reasons.
Status
API status:
general
Included in AUI core?
Not in core
You must explicitly require the web resource key.
Web resource key:
com.atlassian.auiplugin:aui-dropdown2
AMD Module key:
N/A
Experimental API:
5.9
General API:
6
Web Component API:
5.9
Example
Associate a button that acts as the dropdown's trigger
(class="aui-dropdown2-trigger") to the
dropdown menu (<aui-dropdown-menu>)
by setting the trigger's aria-controls
attribute to the id of the dropown menu.
To add a submenu to a dropdown, create an <aui-dropdown-menu>
containing the submenu content, and set the for attribute of the
<aui-item-link> element to the id of the
<aui-dropdown-menu> submenu:
It's recommended to use the interactive boolean attribute
on checkbox and radio items in dropdown
menus to keep the dropdown open when users click those items.
Disabling checkboxes and radios
Add the disabled boolean attribute to
checkbox and radio items to disable them.
Responding to events
Listen to change events fired by
<aui-item-checkbox> elements to respond to users
selecting items, examining the checked attribute
to determine whether the item was checked or unchecked:
Only one radio item can be selected inside each section, so use an <aui-section>
to group a set of <aui-item-radio> elements together.
Responding to events
Listen to change events fired by the <aui-item-radio>
elements to be notified when the previous radio item is deselected and the new item is selected, examining the
checked attribute to differentiate between the two:
When a new radio is selected, the change event for the
previously selected item being deselected may come before or after
the event for the new item being selected, so it's best to examine
the checked attribute to differentiate.
Icons
If you require icons in your dropdown menus then unfortunately, at this time the dropdown web component
does not support what you want to achieve. Fortunately you can still use the existing dropdown2 HTML component
to achieve this. Documentation for the dropdown2 HTML component can be found here:
Dropdown2 HTML componentent documentation
Appearance
Alignment
A dropdown will be left-aligned and will extend to the right unless there is no space in its container, in which case
it will flip and extend to the left. By default, this container is the viewport.
In order to specify a container for alignment, set the data-aui-alignment-container attribute
to a selector matching the container element:
The size of the dropdown can be controlled by adding the aui-list-truncate
class to the <aui-section> element and applying the min-width
and max-width styles to the <aui-dropdown-menu>.
Options will be truncated to a single line matching the specified width:
Disabled items don't prevent event listeners from firing
Interacting with disabled items may still trigger any event listeners attached to the item itself, so ensure
that you have also disabled any additional functionality attached to the item.
Hidden items
To hide a section or menu item in a dropdown, set the hidden attribute on the item.
Hidden items will not appear when the dropdown menu is displayed.
On some occasions, it may be necessary to create a dropdown trigger without
the arrow which is displayed by default.
If this is required, you can add the aui-dropdown2-trigger-arrowless class to the trigger.
The remote endpoint must return a JSON response containing an array of objects representing sections and menu items.
Each object must specify whether it is a section, link, checkbox, or radio button item using the type property:
Property
Type
Description
type
String
The type of the dropdown item. Must be one of:
section
link
checkbox
radio
You may also provide additional properties, depending on the type of the item. Note that these properties closely mirror the attributes available in the markup API:
Item Type
Property
Type
Description
section
label
String
The label for a section. The object must have the type property set to section.
section
items
Array
An array containing the child items of the section.
link
for
String
The id of the aui-dropdown-menu submenu.
link
href
String
The target URL of the link item.
link, checkbox, radio
content
String
The text content of the item.
link, checkbox, radio
disabled
Boolean
Sets the disabled property for the item.
link, checkbox, radio
hidden
Boolean
Sets the hidden property for the item.
link, checkbox, radio
interactive
Boolean
Sets the interactive property for the item.
checkbox, radio
checked
Boolean
Sets the checked property for the item.
Example response
The core structure of this JSON is a list of sections, each section containing an optional label property
and a mandatory items property.
The items array closely reflects the markup pattern – the type property corresponds to the
component's tagname, and the attributes are listed as properties of the same name.
Boolean attributes must take a value of either true or false,
otherwise the value of each property will be inserted into the corresponding attribute directly.