НачалоОсновыКомпонентыТексты

Дерево

Дерево показывает вложенные элементы, например файлы и папки, строками, которые раскрываются и сворачиваются на любую глубину.

Стабильный Figma
ОбзорИспользованиеAPIДоступность
<tk-tree label="Files"></tk-tree>
<tk-tree label="Files"></tk-tree>
<script type="module">
  const tree = document.querySelector('tk-tree');
  tree.data = [
    { id: 'src', label: 'src', children: [
      { id: 'components', label: 'components', children: [{ id: 'button', label: 'button.ts' }] },
      { id: 'index', label: 'index.ts' },
    ] },
    { id: 'readme', label: 'README.md' },
  ];
  tree.expanded = ['src'];
</script>

Анатомия

Часть Что это
tk-tree всё дерево; одна остановка Tab
узел одна строка с подписью; узлы берутся из свойства data
шеврон у узла с детьми; поворачивается, когда узел раскрыт
группа дети узла с отступом на один шаг

Узел — это { id, label, children? }. Узел без children — конечный. Дерево не меняет ваш data: что раскрыто и что выбрано, оно хранит само.

Выбор

selection Что делает
none (по умолчанию) ничего не выбирается; для навигации
single один узел за раз; выбор другого заменяет его
multiple сколько угодно узлов
tree.selection = 'multiple';
tree.selected = ['button', 'index'];
tree.addEventListener('tk-selection-change', (e) => console.log(e.detail.selected));

Выбрать не значит открыть. Space или клик выбирают узел; Enter или клик ещё и отправляют tk-activate, то есть «открой его». Файловому менеджеру обычно нужно и то и другое.

Стрелки никогда не меняют выбор, поэтому разрозненные узлы легко выбрать с клавиатуры: стрелкой к узлу, Space, стрелкой к следующему, снова Space.

Размеры

Размер один. Для более плотного списка задайте дереву --tk-tree-row-height, отступ уровня меняет --tk-tree-indent.