Tree
Basic example
<vscode-tree id="tree-basic-example"></vscode-tree>
const tree = document.querySelector('#tree-basic-example');
const icons = {
branch: 'folder',
leaf: 'file',
open: 'folder-opened',
};
const data = [
{
icons,
label: 'node_modules',
value: 'black hole',
subItems: [
{
icons,
label: '.bin',
subItems: [
{ icons, label: '_mocha_' },
{ icons, label: '_mocha.cmd_' },
{ icons, label: '_mocha.ps1_' },
{ icons, label: 'acorn' },
{ icons, label: 'acorn.cmd' },
{ icons, label: 'acorn.ps1' },
],
},
{
icons,
label: '@11ty',
open: true,
subItems: [
{ icons, label: 'lorem.js' },
{ icons, label: 'ipsum.js' },
{ icons, label: 'dolor.js' },
],
},
{ icons, label: '.DS_Store' },
],
},
{
icons,
label: 'scripts',
subItems: [
{ icons, label: 'build.js' },
{ icons, label: 'start.js' },
],
},
{ icons, label: '.editorconfig', selected: true },
{ icons, label: '2021-01-18T22_10_20_535Z-debug.log' },
];
tree.data = data;
tree.addEventListener('vsc-select', (event) => {
console.log(event.detail);
});
Custom icons
<vscode-tree id="custom-icons-example" indent-guides arrows></vscode-tree>
const tree = document.getElementById("custom-icons-example");
const iconUrls = {
branch: `/dev-assets/icons/folder.svg`,
open: `/dev-assets/icons/folder.expanded.svg`,
leaf: `/dev-assets/icons/typescript.svg`,
};
const data = [
{
label: "vscode-tree",
iconUrls,
subItems: [
{
iconUrls,
label: "index.ts",
},
{
iconUrls,
label: "vscode-tree.styles.ts",
},
{
iconUrls: {
...iconUrls,
leaf: `/dev-assets/icons/typescript-test.svg`,
},
label: "vscode-tree.test.ts",
},
{
iconUrls,
label: "vscode-tree.ts",
},
],
},
];
tree.data = data;
Flat list
The Tree component can also be used to display lists
<vscode-tree id="list-example"></vscode-tree>
const tree = document.getElementById("list-example");
const data = [
{
icons: {
leaf: "git-commit",
},
label: "bump distro",
value: "986e1248f6d8c1aa2a7f57a3fadbb00f94248c2b",
},
{
icons: {
leaf: "git-commit",
},
label: "Update milestone",
value: "4ae26a156300729ed3f9d23377e5d2aff9dcd982",
},
{
icons: {
leaf: "git-commit",
},
label: "env - tweak shell resolve experience on startup",
value: "52098eaeb028e123b3f8af1d4a3d64df6db528be",
},
{
icons: {
leaf: "git-commit",
},
label: "Merge pull request #107126 from Timmmm/atomic_tabs",
value: "fb80c0e44af034df58e329e0f946a9a722ab297c",
},
{
icons: {
leaf: "git-commit",
},
label: "Simplify changes from #108193",
value: "88856f1a1c8f90bcc12171d1af920d74bb59b625",
},
];
tree.data = data;
tree.addEventListener("vsc-select", (event) => {
console.log(event.detail);
});
Actions
Actions are clickable icons in the tree item. When an action icon is clicked, the vsc-run-action
event will be dispatched. The event data contains the action name, the value of the tree item, and
the tree item itself.
<vscode-tree id="actions-example"></vscode-tree>
const tree = document.getElementById("actions-example");
const icons = true;
const actions = [
{
icon: "edit",
actionId: "rename",
tooltip: "Rename",
},
{
icon: "trash",
actionId: "delete",
tooltip: "Delete",
},
];
const data = [
{
label: "vscode-tree",
icons,
actions,
value: "C:\\workspace\\vscode-webview-elements\\src\\vscode-tree",
subItems: [
{
icons,
actions,
label: "index.ts",
value:
"C:\\workspace\\vscode-webview-elements\\src\\vscode-tree\\index.ts",
},
{
icons,
actions,
label: "vscode-tree.styles.ts",
value:
"C:\\workspace\\vscode-webview-elements\\src\\vscode-tree\\vscode-tree.styles.ts",
},
{
icons,
actions,
label: "vscode-tree.test.ts",
value:
"C:\\workspace\\vscode-webview-elements\\src\\vscode-tree\\vscode-tree.test.ts",
},
{
icons,
actions,
label: "vscode-tree.ts",
value:
"C:\\workspace\\vscode-webview-elements\\src\\vscode-tree\\vscode-tree.ts",
},
],
},
];
tree.data = data;
tree.addEventListener("vsc-run-action", (ev) => {
console.log(ev.detail);
});
Decorations
Decoration is additional content on the right edge of the tree item. It can be a short text, a counter, or a small, filled circle.
<vscode-tree id="decorations-example"></vscode-tree>
const tree = document.getElementById('decorations-example');
const icons = true;
const data = [
{
label: 'vscode-tree',
icons,
decorations: [{
appearance: 'counter-badge',
content: '9',
}],
subItems: [
{
icons,
label: 'index.ts',
decorations: [
{
content: 'M',
}
]
},
{
icons,
label: 'vscode-tree.styles.ts',
decorations: [
{
appearance: 'filled-circle',
}
]
},
{
icons,
label: 'vscode-tree.test.ts',
decorations: [
{
content: '-22',
color: '#f00',
},
{
content: '+11',
color: '#0f0',
}
]
},
{
icons,
label: 'vscode-tree.ts',
},
],
},
];
tree.data = data;