tree-grid
A tree is visualization of a structure hierarchy. A branch can be expanded or collapsed.
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
6,000 | 837-555-1212 | New York, NY | ||||
1,234 | 837-555-1212 | Paris, France |
About Tree Grid
A tree grid is additional semantics that are laid on top of a grid based component via ARIA attributes, to enable hierarchically structured tabular data.
The tree grid comes with a very specific keyboard interaction model which must be implemented for the component to be screen reader accessible.
Accessibility
Markup
role="treegrid"should be applied to thetableelementaria-readonly="true"should be applied to thetableelementaria-level="n"wherenrepresents the nesting level of a particular grid row, should be applied to thetrelementaria-setsize="n"wherenis the number of items for that specificaria-levelshould be applied to thetrelementaria-posinset="n"wherenrepresents the position in thearia-levelset the row is placed at, should be applied to thetrelementaria-expanded="false"should be placed on rows that are collapsed and have child rowsaria-expanded="true"should be placed on rows that are expanded and have child rowstabindex="0"should be placed on the firsttrin the grid on load, to make the row focusable- Every actionable element in the grid should have
tabindex="-1"applied to make them not focusable in the grids navigation mode
Multi select tree grid:
aria-multiselectable="true"should be placed on thetableelementaria-selected="false"should be set by default on alltrelements that aren't selectedaria-selected="true"should be set only on thetrelements that are selected
Single Select tree grid:
aria-selected="true"should be applied to thetrthat is selected in the tree grid
Keyboard Interactions
- Overall keyboard interaction should follow the same keyboard modal as the Advanced and Inline Edit Data Table with some additions
- Navigation mode is the default mode. The grid only has a single focusable element at any time and it is either the
tror thetd - Actionable mode is enabled when the user presses the
Enterkey, where actionable elements become focusable in the cell - Actionable mode is exited when the user presses the
Escapekey, and the user is placed back into Navigation Mode on the last cell they were in
- Navigation mode is the default mode. The grid only has a single focusable element at any time and it is either the
- User focus is initially placed on the first row in the tree grid
Downarrow key moves the user down one row and movestabindex="0"with itUparrow key moves the user up one row and movestabindex="0"with itSpacekey when focused on a row should select that row by settingaria-selected="trueon thetrelementRightarrow key on a collapsed row, will expand it and updatearia-expandedRightarrow key on an expanded or end row will move the user to the first cell in the row and movetabindex="0"with itRightarrow key on a cell will move the user to the next cell in the row and movetabindex="0"with itLeftarrow key on a collapsed or end row will move the user to it's parent row and collapse it, if it has oneLeftarrow key on an expanded row will collapse it and updatearia-expandedLeftarrow key on a cell will move the user to the previous cell in the row and movestabindex="0"with itLeftarrow key on the first cell of a row will move the user back to the row and movestabindex="0"with it
Base
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
6,000 | 837-555-1212 | New York, NY | ||||
1,234 | 837-555-1212 | Paris, France |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">States
Expanded
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
745 | 837-555-1212 | New York, NY | ||||
6,000 | 837-555-1212 | New York, NY | ||||
1,234 | 837-555-1212 | Paris, France |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Selected row
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
745 | 837-555-1212 | New York, NY | ||||
6,000 | 837-555-1212 | New York, NY | ||||
1,234 | 837-555-1212 | Paris, France |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Deeply nested branches
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
3,000 | 837-555-1212 | New York, NY | ||||
745 | 837-555-1212 | New York, NY | ||||
578 | 837-555-1212 | Los Angeles, CA | ||||
430 | 837-555-1212 | San Francisco, CA | ||||
1,210 | 837-555-1212 | New York, NY | ||||
410 | 837-555-1212 | New York, NY | ||||
390 | 837-555-1212 | Los Angeles, CA | ||||
270 | 837-555-1212 | San Francisco, CA | ||||
6,000 | 837-555-1212 | New York, NY | ||||
2,540 | 837-555-1212 | New York, NY | ||||
1,856 | 837-555-1212 | New York, NY | ||||
1,934 | 837-555-1212 | Los Angeles, CA |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Examples
Headless
Choose a row to select | Account Name | Actions |
|---|---|---|
<table aria-multiselectable="true" class="slds-table slds-table_header-hidden slds-table_bordered slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Headless with selected row
Choose a row to select | Account Name | Actions |
|---|---|---|
<table aria-multiselectable="true" class="slds-table slds-table_header-hidden slds-table_bordered slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Headless with no borders
Choose a row to select | Account Name | Actions |
|---|---|---|
<table aria-multiselectable="true" class="slds-table slds-table_header-hidden slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Headless with no borders and a selected row
Choose a row to select | Account Name | Actions |
|---|---|---|
<table aria-multiselectable="true" class="slds-table slds-table_header-hidden slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Single select
| Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | |||
10,000 | 837-555-1212 | San Francisco, CA | |||
6,000 | 837-555-1212 | New York, NY | |||
1,234 | 837-555-1212 | Paris, France |
<table class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Single select with a selected row
| Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | |||
10,000 | 837-555-1212 | San Francisco, CA | |||
6,000 | 837-555-1212 | New York, NY | |||
1,234 | 837-555-1212 | Paris, France |
<table class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Single select headless
Account Name | Actions |
|---|---|
<table class="slds-table slds-table_header-hidden slds-table_bordered slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Single select headless with selected row
Account Name | Actions |
|---|---|
<table class="slds-table slds-table_header-hidden slds-table_bordered slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Single select headless with no borders
Account Name | Actions |
|---|---|
<table class="slds-table slds-table_header-hidden slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Single select headless with no borders and a selected row
Account Name | Actions |
|---|---|
<table class="slds-table slds-table_header-hidden slds-table_edit slds-tree slds-table_tree" role="treegrid">
<thead class="slds-assistive-text">
<tr class="slds-line-height_reset">Modifiers
Interaction
Item Disabled
When a branch doesn't have children, apply slds-is-disabled to the corresponding slds-button_icon element.
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
6,000 | 837-555-1212 | New York, NY | ||||
1,234 | 837-555-1212 | Paris, France |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">Item Hovered
When a tree item is hovered, apply slds-is-hovered to slds-tree__item element`.
| Choose a row | Sort by: Account Name | Sort by: Employees | Sort by: Phone Number | Sort by: Account Owner | Sort by: Billing City | Actions |
|---|---|---|---|---|---|---|
3,100 | 837-555-1212 | Phoenix, AZ | ||||
10,000 | 837-555-1212 | San Francisco, CA | ||||
6,000 | 837-555-1212 | New York, NY |
<table aria-multiselectable="true" class="slds-table slds-table_bordered slds-table_edit slds-table_fixed-layout slds-table_resizable-cols slds-tree slds-table_tree" role="treegrid">
<thead>
<tr class="slds-line-height_reset">