« E2 - TreeView Demo

Interactive demonstration of the <e2-tree-view> element

Basic TreeView

Simple hierarchical tree with expand/collapse functionality:

Events will appear here...

Multi-Select TreeView

TreeView with multi-selection enabled (use Ctrl+click):

Events will appear here...

Dark Theme TreeView

TreeView with explicit dark theme:

Events will appear here...

Code Examples

Basic TreeView:

<e2-tree-view></e2-tree-view>

<script>
const treeView = document.querySelector('e2-tree-view');
treeView.items = [
  {
    id: 'folder1',
    label: 'Documents',
    icon: '๐Ÿ“',
    children: [
      {
        id: 'file1',
        label: 'report.pdf',
        icon: '๐Ÿ“„'
      },
      {
        id: 'subfolder1',
        label: 'Archive',
        icon: '๐Ÿ“',
        children: [
          {
            id: 'file2',
            label: 'old-document.docx',
            icon: '๐Ÿ“„'
          }
        ]
      }
    ]
  }
];
</script>

Multi-Select TreeView:

<e2-tree-view multi-select></e2-tree-view>

<script>
const treeView = document.querySelector('e2-tree-view');

// Enable multi-selection programmatically
treeView.multiSelect = true;

// Select multiple items
treeView.selectItem('item1');
treeView.selectItem('item2');

// Get selected items
console.log(treeView.selectedItems);
console.log(treeView.selectedIds);
</script>

Event Handling:

// Listen for expansion events
document.addEventListener('tree-expand', event => {
  const { item, itemId } = event.detail;
  console.log(`Expanded: ${item.label}`);
});

// Listen for collapse events
document.addEventListener('tree-collapse', event => {
  const { item, itemId } = event.detail;
  console.log(`Collapsed: ${item.label}`);
});

// Listen for selection changes
document.addEventListener('tree-selection-change', event => {
  const { selectedItems, addedItems, removedItems } = event.detail;
  console.log('Selection changed:', selectedItems);
});

// Listen for item clicks
document.addEventListener('tree-item-click', event => {
  const { item, ctrlKey, shiftKey } = event.detail;
  console.log(`Clicked: ${item.label}`, { ctrlKey, shiftKey });
});

// Listen for double-clicks
document.addEventListener('tree-item-dblclick', event => {
  const { item } = event.detail;
  console.log(`Double-clicked: ${item.label}`);
});

Programmatic Control:

const treeView = document.querySelector('e2-tree-view');

// Expand/collapse operations
treeView.expandAll();
treeView.collapseAll();
treeView.expandItem('folder1');
treeView.collapseItem('folder1');

// Selection operations
treeView.selectItem('item1');
treeView.deselectItem('item1');
treeView.clearSelection();

// Access properties
console.log(treeView.items);
console.log(treeView.selectedItems);
console.log(treeView.selectedIds);
console.log(treeView.multiSelect);