id | section | cssPrefix | propComponents | beta | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Dual list selector |
components |
pf-v5-c-dual-list-selector |
|
true |
import AngleDoubleLeftIcon from '@patternfly/react-icons/dist/esm/icons/angle-double-left-icon'; import AngleLeftIcon from '@patternfly/react-icons/dist/esm/icons/angle-left-icon'; import AngleDoubleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-double-right-icon'; import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon'; import PficonSortCommonAscIcon from '@patternfly/react-icons/dist/esm/icons/pficon-sort-common-asc-icon'; import SearchIcon from '@patternfly/react-icons/dist/esm/icons/search-icon'; import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
The dual list selector is built in a composable manner to make customization easier. The standard sub-component relationships are arranged as follows:
<DualListSelector>
<DualListSelectorPane>
<DualListSelectorList>
<DualListSelectorListItem />
</DualListSelectorList>
</DualListSelectorPane>
<DualListSelectorControlsWrapper>
<DualListSelectorControl /> /* A standard Dual list selector has 4 controls */
</DualListSelectorControlsWrapper>
<DualListSelectorPane isChosen>
<DualListSelectorList>
<DualListSelectorListItem />
</DualListSelectorList>
</DualListSelectorPane>
</DualListSelector>
This example only allows reordering the contents of the "chosen" pane with drag and drop. To make a pane able to be reordered:
- wrap the
DualListSelectorPane
in aDragDrop
component - wrap the
DualListSelectorList
in aDroppable
component - wrap the
DualListSelectorListItem
components in aDraggable
component - define an
onDrop
callback which reorders the sortable options.- The
onDrop
function provides the starting location and destination location for a dragged item. It should return true to enable the 'drop' animation in the new location and false to enable the 'drop' animation back to the item's old position. - define an
onDrag
callback which ensures that the drag event will not cross hairs with theonOptionSelect
click event set on the option. Note: theignoreNextOptionSelect
state value is used to prevent selection while dragging.
- The
Note: Keyboard accessibility and screen reader accessibility for the DragDrop
component are still in development.