Dropdowns
Summary
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 | 
|---|---|
| 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 (aria-controls
    attribute to the id of the dropown menu.
Code
Sections
    An 
- links,
- checkboxes, or
- radios.
    To give a section a heading add the label attribute:
Links
    Use href attribute specified to add link items to a dropdown.
Submenus
 To add a submenu to a dropdown, create an for attribute of the
    id of the
    
Checkboxes
    Use 
Responding to events
    Listen to change events fired by
    checked attribute
    to determine whether the item was checked or unchecked:
Radios
    Similar to checkboxes, use
    
Responding to events
    Listen to change events fired by the checked attribute to differentiate between the two:
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 on the trigger element
    to a selector matching the container element:
Sizing
    The size of the dropdown can be controlled by adding the aui-list-truncate
    class to the min-width
    and max-width styles to the 
Options will be truncated to a single line matching the specified width:
Disabled items
To apply a disabled style to a dropdown item, set the disabled attribute on the item.
Disabling an item will prevent links from being followed, and checkboxes and radio buttons from being checked.
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.
Dropdown triggers without arrows
    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.
DOM placement
A dropdown will not alter its allocation in DOM tree by default.
To maintain a natural tab order for keyboard users, a dropdown should be rendered as the next sibling of its trigger.
    It may happen that due to the design of your application the dropdown's content may get obscured - i.e. being clipped
    by the parent container with overflow:hidden; CSS property set.
    You may want to modify your styles to avoid such behaviour and/or adjust the alignment of the dropdown  .
    In cases when such adjustments are not sufficient - you may specify a rendering DOM container.
    Upon displaying the dropdown - the component will temporarily move it's subtree into the specified container - allowing for unobstructed rendering.
    You should always choose the closest container allowing for unobstructed render.
    You are responsible for ensuring the component is properly cleaned up, adequately to your application's lifecycle.
    In order to specify a rendering DOM container, set the data-aui-dom-container attribute
    to a selector matching the container element:
- If data-aui-dom-containerattribute is set but the selector matches multiple elements - it will default to first available match.
- If data-aui-dom-containerattribute is set but the selector does not match to any existing elements it will default todocument.body
- If data-aui-dom-containerattribute is not set, the dropdown will be left in place.
Ajax
Async dropdown
A dropdown can fetch its contents from a remote source which returns a JSON response matching the given specification.
To load contents from a remote source, set the src attribute to the URL of the remote endpoint.
Server response
JSON specification
    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: 
 | 
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 typeproperty set tosection. | 
| section | items | Array | An array containing the child items of the section. | 
| link | for | String | The id of the aui-dropdown-menusubmenu. | 
| 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 disabledproperty for the item. | 
| link,checkbox,radio | hidden | Boolean | Sets the hiddenproperty for the item. | 
| link,checkbox,radio | interactive | Boolean | Sets the interactiveproperty for the item. | 
| checkbox,radio | checked | Boolean | Sets the checkedproperty 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.
API Reference
Dropdown trigger
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| class="aui-dropdown2-trigger" | String | Add this class to | ||
| aria-controls | String | The id of the dropdown that this button will open. | ||
| data-aui-alignment-container | String | A selector matching the container element to use for alignment. | 
Dropdown menu
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| src | String | The URL of the remote source that returns a JSON response containing the dropdown contents to template. | ||
| data-aui-dom-container | String | A selector matching the container element this dropdown should be appended to when opened. | 
Section
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| label | String | The text that will appear in the heading of a dropdown section. | ||
| class="aui-list-truncate" | String | Add this class to min-widthandmax-widthstyles. | 
Link item
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| for | Boolean | The idof another dropdown that this link will open as a submenu. | ||
| href | Boolean | The target URL of the link item. | ||
| disabled | Boolean | If set, the dropdown item will not be selectable by the user. | ||
| hidden | Boolean | If set, the dropdown item will not be visible. | ||
| interactive | Boolean | If set, the dropdown item will not close when clicked. | 
Checkbox item
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| checked | Boolean | If set, the dropdown item will be selected. | ||
| disabled | Boolean | If set, the dropdown item will not be selectable by the user. | ||
| hidden | Boolean | If set, the dropdown item will not be visible. | ||
| interactive | Boolean | If set, the dropdown item will not close when clicked. | 
Radio item
| Name | Attribute | Property | Type | Description | 
|---|---|---|---|---|
| checked | Boolean | If set, the dropdown item will be selected. | ||
| disabled | Boolean | If set, the dropdown item will not be selectable by the user. | ||
| hidden | Boolean | If set, the dropdown item will not be visible. | ||
| interactive | Boolean | If set, the dropdown item will not close when clicked. |