Tree
Trees are interactive lists that allow users to navigate through hierarchical data.
Usage
forge-tree nests forge-tree-item children to let a user navigate hierarchical data, through mode (single, multiple, leaf, or off), accordion, indentLines, selectionFollowsFocus, and disabled, while each item carries its own open, selected, lazy, and disabled state. Use it for genuinely hierarchical data — folders, nested categories, an org chart; for a flat set of items, use a plain list instead.
Rules
Basic usage
Nest forge-tree-item elements in each other’s children slot to build the hierarchy; each item’s value identifies it when selected.
A three-level tree of nested items.
<forge-tree>
<forge-tree-item>
<span>
Item 1
</span>
<forge-tree-item slot="children">
<span>
Item 1.1
</span>
<forge-tree-item slot="children">
<span>
Item 1.1.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 1.1.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 1.1.3
</span>
</forge-tree-item>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 1.2
</span>
<forge-tree-item slot="children">
<span>
Item 1.2.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 1.2.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 1.2.3
</span>
</forge-tree-item>
</forge-tree-item>
</forge-tree-item>
<forge-tree-item>
<span>
Item 2
</span>
<forge-tree-item slot="children">
<span>
Item 2.1
</span>
<forge-tree-item slot="children">
<span>
Item 2.1.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 2.1.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 2.1.3
</span>
</forge-tree-item>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 2.2
</span>
<forge-tree-item slot="children">
<span>
Item 2.2.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 2.2.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 2.2.3
</span>
</forge-tree-item>
</forge-tree-item>
</forge-tree-item>
<forge-tree-item>
<span>
Item 3
</span>
<forge-tree-item slot="children">
<span>
Item 3.1
</span>
<forge-tree-item slot="children">
<span>
Item 3.1.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 3.1.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 3.1.3
</span>
</forge-tree-item>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 3.2
</span>
<forge-tree-item slot="children">
<span>
Item 3.2.1
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 3.2.2
</span>
</forge-tree-item>
<forge-tree-item slot="children">
<span>
Item 3.2.3
</span>
</forge-tree-item>
</forge-tree-item>
</forge-tree-item>
</forge-tree>Selection
Set mode to single (the default) or multiple to control how many items can be selected at once, or leaf to only allow selecting items with no children. Set mode="off" to disable selection entirely, and selectionFollowsFocus to select an item as soon as it’s focused (single mode only).
Accordion behavior
Set accordion so opening one item automatically closes its siblings, instead of allowing multiple branches open at once.
Lazy loading
Set lazy on a forge-tree-item for a node whose children should be fetched or rendered only when the item is first opened, rather than up front.
Trees are interactive lists that allow users to navigate through hierarchical data.
import "@tylertech/forge/tree";| Property | Attribute | Type | Default | Description |
|---|---|---|---|---|
accordion | accordion | boolean | false | Whether opening an item closes all other items. |
indentLines | indentLines | boolean | false | Toggles the rendering of indent lines showing hierarchy. |
mode | mode | TreeMode | 'single' | How selecting tree items is handled. |
selectionFollowsFocus | selectionFollowsFocus | boolean | false | Whether focusing an item also selects it. This takes no effect when in multiple mode. |
disabled | disabled | boolean | false | Whether selecting items is disabled. |
value | value | unknown[] | [] | The value of all selected items. |
| Name | Type | Description |
|---|---|---|
forge-tree-select-all | CustomEvent<void> | Dispatched when the user selects all items. |
| Name | Description |
|---|---|
(default) | The default slot for tree items. |
expand-icon | A custom expand icon to show when an item is closed. |
collapse-icon | A custom collapse icon to show when an item is open. |
| Name | Description |
|---|---|
::part(root) | The root tree element. |
Keyboard interaction and ARIA
Tree implements the keyboard shortcuts and ARIA roles, states, and properties defined in the WAI-ARIA Tree View pattern — arrow keys move focus between items, and the expanded/selected state of each item is exposed automatically. You don’t need to hand-wire ARIA attributes yourself.