Breadcrumbs
Breadcrumbs show hierarchy and navigational context for a user’s location within an application.
install | yarn add @react-spectrum/breadcrumbs |
---|---|
version | 3.0.0-alpha.1 |
usage | import {Breadcrumbs} from '@react-spectrum/breadcrumbs' |
Example#
<Breadcrumbs>
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
</Breadcrumbs>
Content#
Breadcrumbs accept as list of children
, each with a uniqueKey
prop.
It is required that the children
are Item
components from the @react-stately/collections
library.
function Example() {
return (
<Breadcrumbs>
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
</Breadcrumbs>
);
}
In order to identify children when a user takes an action on a item,
each child needs to have a uniqueKey
prop. See Events for more information.
Internationalization#
In order to internationalize Breadcrumbs, the strings of all child items should be localized.
Events#
Use the onAction
prop as a callback to handle press events on items.
The uniqueKey
prop from the selected item will be passed into the callback.
function Example() {
let folders = [
{id: 1 label: 'Folder 1'}
{id: 2 label: 'Folder 2'}
{id: 3 label: 'Folder 3'}
];
let [folderId setFolderId] = ReactuseState();
return (
<div>
<Breadcrumbs onAction=(a) => setFolderId(a)>
foldersmap(f => <Item key= fid uniqueKey= fid> flabel</Item>)
</Breadcrumbs>
<p>Last Selected Folder: folderId</p>
</div>
);
}
Props#
Name | Type | Default | Description |
size | 'S' | 'M' | 'L' | "M" | What the Breadcrumbs's size should be. |
maxVisibleItems | 'auto' | number | 4 | The current number of visible items before items are collapsed. |
showRoot | boolean | — | Whether to always show the root item if the items are collapsed. |
children | ReactElement<ItemProps<T>> | ReactElement<ItemProps<T>>[] | — | The breadcrumb items. |
isHeading | boolean | — | Whether the breadcrumbs are used as a heading element. |
headingAriaLevel | number | 1 | Sets the aria-level attribute of the last item, but only if isHeading is true. |
isDisabled | boolean | — | Whether the Breadcrumbs are disabled. |
UNSAFE_className | string | — | |
UNSAFE_style | CSSProperties | — |
Events
Name | Type | Default | Description |
onAction | (key: Key) => void | — | Called when an item is acted upon (usually selection via press). |
Layout
Name | Type | Default | Description |
flex | string | number | boolean | — | |
flexGrow | number | — | |
flexShrink | number | — | |
flexBasis | number | string | — | |
alignSelf | 'auto'
| 'normal'
| 'start'
| 'end'
| 'flex-start'
| 'flex-end'
| 'self-start'
| 'self-end'
| 'center'
| 'stretch' | — | |
justifySelf | 'auto'
| 'normal'
| 'start'
| 'end'
| 'flex-start'
| 'flex-end'
| 'self-start'
| 'self-end'
| 'center'
| 'left'
| 'right'
| 'stretch' | — | |
flexOrder | number | — | |
gridArea | string | — | |
gridColumn | string | — | |
gridRow | string | — | |
gridColumnStart | string | — | |
gridColumnEnd | string | — | |
gridRowStart | string | — | |
gridRowEnd | string | — |
Spacing
Name | Type | Default | Description |
margin | DimensionValue | — | |
marginTop | DimensionValue | — | |
marginLeft | DimensionValue | — | |
marginRight | DimensionValue | — | |
marginBottom | DimensionValue | — | |
marginStart | DimensionValue | — | |
marginEnd | DimensionValue | — | |
marginX | DimensionValue | — | |
marginY | DimensionValue | — |
Sizing
Name | Type | Default | Description |
width | DimensionValue | — | |
minWidth | DimensionValue | — | |
maxWidth | DimensionValue | — | |
height | DimensionValue | — | |
minHeight | DimensionValue | — | |
maxHeight | DimensionValue | — |
Positioning
Name | Type | Default | Description |
position | 'static'
| 'relative'
| 'absolute'
| 'fixed'
| 'sticky' | — | |
top | DimensionValue | — | |
bottom | DimensionValue | — | |
left | DimensionValue | — | |
right | DimensionValue | — | |
start | DimensionValue | — | |
end | DimensionValue | — | |
zIndex | number | — | |
isHidden | boolean | — |
Accessibility
Name | Type | Default | Description |
role | string | — | |
id | string | — | |
tabIndex | number | — | |
aria-label | string | — | Defines a string value that labels the current element. |
aria-labelledby | string | — | Identifies the element (or elements) that labels the current element. |
aria-describedby | string | — | Identifies the element (or elements) that describes the object. |
aria-controls | string | — | Identifies the element (or elements) whose contents or presence are controlled by the current element. |
aria-owns | string | — | Identifies an element (or elements) in order to define a visual, functional, or contextual parent/child relationship between DOM elements where the DOM hierarchy cannot be used to represent the relationship. |
aria-hidden | boolean | 'false' | 'true' | — | Indicates that the element is perceivable but disabled, so it is not editable or otherwise operable. |
Visual options#
Size#
The small size is useful when available space is limited.
<Breadcrumbs size="S">
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
</Breadcrumbs>
The medium size is the default.
<Breadcrumbs size="M">
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
</Breadcrumbs>
The large size places emphasis on the selected item as a page title or heading.
<Breadcrumbs size="L">
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
</Breadcrumbs>
Heading#
Use the isHeading
prop to add a role of "heading" to the highlighted item.
If a change to the aria-level is required, use the headingAriaLevel
prop.
<Breadcrumbs isHeading headingAriaLevel=2>
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
</Breadcrumbs>
Visible items#
Breadcrumbs truncate by default to a maximum of 4 items visible.
If using maxVisibleItems="auto"
, truncation of breadcrumb items begins when there is not enough room to display all items
in the parent container.
In order to manually control the truncation, use the maxVisibleItems
prop.
<Breadcrumbs maxVisibleItems=2>
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
</Breadcrumbs>
Root context#
Some applications find that displaying the root item is useful for orienting users. This variation keeps the root visible when other items are truncated into the menu.
<View overflow="hidden" width="200px">
<Breadcrumbs showRoot maxVisibleItems="auto">
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
<Item uniqueKey="Folder 4">Folder 4</Item>
<Item uniqueKey="Folder 5">Folder 5</Item>
</Breadcrumbs>
</View>
Disabled#
Breadcrumbs in a disabled state shows that selection exists, but is not available in that circumstance. This can be used to maintain layout continuity.
<Breadcrumbs isDisabled>
<Item uniqueKey="Folder 1">Folder 1</Item>
<Item uniqueKey="Folder 2">Folder 2</Item>
<Item uniqueKey="Folder 3">Folder 3</Item>
</Breadcrumbs>
Item<T>(props: ItemProps<T>): ReactElement