Skip to content
VSCode Elements

Tree

Tree component with the default settings. Check the console log for the triggered events.

Fruits Citrus Fruits Orange Lemon Grapefruit Berries Strawberry Blueberry Raspberry Tropical Fruits Mango Pineapple Papaya Vegetables Leafy Greens Spinach Lettuce Kale Root Vegetables Carrot Beetroot Radish Nightshades Tomato Eggplant Bell Pepper
Controls
<vscode-tree id="tree-basic-example">
<vscode-tree-item>
Fruits
<vscode-tree-item>
Citrus Fruits
<vscode-tree-item>Orange</vscode-tree-item>
<vscode-tree-item>Lemon</vscode-tree-item>
<vscode-tree-item>Grapefruit</vscode-tree-item>
</vscode-tree-item>
<vscode-tree-item>
Berries
<vscode-tree-item>Strawberry</vscode-tree-item>
<vscode-tree-item>Blueberry</vscode-tree-item>
<vscode-tree-item>Raspberry</vscode-tree-item>
</vscode-tree-item>
<vscode-tree-item>
Tropical Fruits
<vscode-tree-item>Mango</vscode-tree-item>
<vscode-tree-item>Pineapple</vscode-tree-item>
<vscode-tree-item>Papaya</vscode-tree-item>
</vscode-tree-item>
</vscode-tree-item>
<vscode-tree-item>
Vegetables
<vscode-tree-item>
Leafy Greens
<vscode-tree-item>Spinach</vscode-tree-item>
<vscode-tree-item>Lettuce</vscode-tree-item>
<vscode-tree-item>Kale</vscode-tree-item>
</vscode-tree-item>
<vscode-tree-item>
Root Vegetables
<vscode-tree-item>Carrot</vscode-tree-item>
<vscode-tree-item>Beetroot</vscode-tree-item>
<vscode-tree-item>Radish</vscode-tree-item>
</vscode-tree-item>
<vscode-tree-item>
Nightshades
<vscode-tree-item>Tomato</vscode-tree-item>
<vscode-tree-item>Eggplant</vscode-tree-item>
<vscode-tree-item>Bell Pepper</vscode-tree-item>
</vscode-tree-item>
</vscode-tree-item>
</vscode-tree>

Icons can be added using named slots. Any valid HTML content can be used as an icon.

  • Icon area: The display area for icons is limited to 16×16 pixels. Content that exceeds this size will be clipped.
  • Available slots:
    • icon-branch — shown when a branch item is collapsed.
    • icon-branch-opened — shown when a branch item is expanded.
    • icon-leaf — shown for leaf items

The visibility of each icon depends on the state of the corresponding tree item.

To use the icons, the codicons.css file must be included in the page:

<link rel="stylesheet" href="path/to/codicon.css" id="vscode-codicon-stylesheet">

Note the required id on the link element! To use web fonts in web components, the component needs to include the font stylesheet in addition to the page. This id serves as a lookup so the icon component can automatically create and insert it’s own link tag.

vscode-tree helpers.test.ts helpers.ts index.ts tree-context.ts vscode-tree.styles.ts vscode-tree.test.ts vscode-tree.ts
<vscode-tree>
<vscode-tree-item>
<vscode-icon name="folder" slot="icon-branch"></vscode-icon>
<vscode-icon
name="folder-opened"
slot="icon-branch-opened"
></vscode-icon>
vscode-tree
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>
helpers.test.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>helpers.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>index.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>
tree-context.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>
vscode-tree.styles.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>
vscode-tree.test.ts
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="file" slot="icon-leaf"></vscode-icon>vscode-tree.ts
</vscode-tree-item>
</vscode-tree-item>
</vscode-tree>

Another example with <img> tags.

vscode-tree helpers.test.ts helpers.ts index.ts tree-context.ts vscode-tree.styles.ts vscode-tree.test.ts vscode-tree.ts
<vscode-tree>
<vscode-tree-item open>
<img src="/material-icons/folder.svg" slot="icon-branch" />
<img src="/material-icons/folder-open.svg" slot="icon-branch-opened" />
vscode-tree
<vscode-tree-item>
<img src="/material-icons/test-ts.svg" slot="icon-leaf" />
helpers.test.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/typescript.svg" slot="icon-leaf" />
helpers.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/typescript.svg" slot="icon-leaf" />
index.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/typescript.svg" slot="icon-leaf" />
tree-context.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/typescript.svg" slot="icon-leaf" />
vscode-tree.styles.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/test-ts.svg" slot="icon-leaf" />
vscode-tree.test.ts
</vscode-tree-item>
<vscode-tree-item>
<img src="/material-icons/typescript.svg" slot="icon-leaf" />
vscode-tree.ts
</vscode-tree-item>
</vscode-tree-item>
</vscode-tree>

The Tree component can also be used to display lists.

bump distro Update milestone env – tweak shell resolve experience on startup Merge pull request #107126 from Timmmm/atomic_tabs Simplify changes from #108193
<vscode-tree>
<vscode-tree-item>
<vscode-icon name="git-commit" slot="icon-leaf"></vscode-icon>
bump distro
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="git-commit" slot="icon-leaf"></vscode-icon>
Update milestone
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="git-commit" slot="icon-leaf"></vscode-icon>
env – tweak shell resolve experience on startup
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="git-commit" slot="icon-leaf"></vscode-icon>
Merge pull request #107126 from Timmmm/atomic_tabs
</vscode-tree-item>
<vscode-tree-item>
<vscode-icon name="git-commit" slot="icon-leaf"></vscode-icon>
Simplify changes from #108193
</vscode-tree-item>
</vscode-tree>

You can place any HTML content inside a <vscode-tree-item> component.

tsconfig.json
2
Cannot find type definition file for 'mocha'.
ts
[Ln 1, Col 1]
  The file is in the program because:
    Entry point of type library 'mocha' specified in compilerOptions
Cannot find type definition file for 'user-agent-data-types'.
ts
[Ln 1, Col 1]
  The file is in the program because:
    Entry point of type library 'user-agent-data-types' specified in compilerOptions
<vscode-tree>
<vscode-tree-item open>
<div class="file">
<vscode-icon name="file"></vscode-icon>
<div class="filename">tsconfig.json</div>
<vscode-badge variant="counter">2</vscode-badge>
</div>
<vscode-tree-item>
<div class="message">
<div class="actions">
<vscode-icon name="error"></vscode-icon>
</div>
<div class="message-details">
<div class="message-line">
<span class="message-raw"
>Cannot find type definition file for 'mocha'.</span
>
<div class="message-error-code">ts</div>
<div class="message-location">[Ln 1, Col 1]</div>
<div class="action-bar">
<vscode-toolbar-button
icon="chevron-down"
class="toggle-button open"></vscode-toolbar-button>
</div>
</div>
<div class="toggleable open">
<div class="message-line">
<span class="message-raw"
>&nbsp;&nbsp;The file is in the program because:</span
>
</div>
<div class="message-line">
<span class="message-raw"
>&nbsp;&nbsp;&nbsp;&nbsp;Entry point of type library 'mocha'
specified in compilerOptions</span
>
</div>
</div>
</div>
</div>
</vscode-tree-item>
<vscode-tree-item>
<div class="message">
<div class="actions">
<vscode-icon name="error"></vscode-icon>
</div>
<div class="message-details">
<div class="message-line">
<span class="message-raw"
>Cannot find type definition file for 'user-agent-data-types'.</span
>
<div class="message-error-code">ts</div>
<div class="message-location">[Ln 1, Col 1]</div>
<div class="action-bar">
<vscode-toolbar-button
icon="chevron-down"
class="toggle-button open"></vscode-toolbar-button>
</div>
</div>
<div class="toggleable open">
<div class="message-line">
<span class="message-raw"
>&nbsp;&nbsp;The file is in the program because:</span
>
</div>
<div class="message-line">
<span class="message-raw"
>&nbsp;&nbsp;&nbsp;&nbsp;Entry point of type library
'user-agent-data-types' specified in compilerOptions</span
>
</div>
</div>
</div>
</div>
</vscode-tree-item>
</vscode-tree-item>
</vscode-tree>