TreeTable
A table whose rows form a tree. Everything of the table — sorting, pages, filters, selection, column resize and reorder, frozen columns, scroll — works on the tree, plus lazy children and checkbox selection of whole branches.
Basic
Nodes with data and children. The first column gets the toggler; Tab reaches a row, ArrowRight / ArrowLeft open and close it.
Applications | 300 | Folder |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Templates
txTableCell gets the node data as let-file and the node itself as node. [(expandedKeys)] keeps the open rows; expandAll() / collapseAll() open or close all.
300 MB | |
220 MB | |
80 MB | |
50 MB | |
12 MB | |
640 MB |
Sort
Sorting orders siblings on every level and keeps children under their parent. sortMode="multiple" sorts by several columns with Ctrl / ⌘ + click.
Music | 640 | Folder |
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
backup-2025.zip | 30 | Archive |
photos.zip | 20 | Archive |
Desktop | 12 | Folder |
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
backup-2025.zip | 30 | Archive |
photos.zip | 20 | Archive |
Desktop | 12 | Folder |
Music | 640 | Folder |
Pagination
paginator pages the root nodes; open children stay on the page of their parent.
Applications | 300 | Folder |
Cloud | 50 | Folder |
Filter
Column filters and the global search keep the parents of every match and open them. filterMode="strict" drops the children of a match that do not match themselves.
Applications | 300 | Folder |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Selection
selectionMode="single" or multiple selects rows by click, Space or Enter; Shift + click selects a range.
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Selected: —
Checkbox
selectionMode="checkbox" puts a checkbox next to the toggler and a select-all checkbox in the header. Checking a folder checks its branch; a partly checked folder shows a dash.
Applications | 300 | Folder |
Editor | 220 | Folder |
editor.app | 180 | Application |
editor-docs.pdf | 40 | Document |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
0 checked
Lazy
Rows with leaf: false and no children load on demand: nodeExpand fires and the toggler spins until the children arrive.
Projects | 0 | Folder |
Reports | 0 | Folder |
Shared | 0 | Folder |
Server
lazy hands sorting and pages of the root nodes to the server through lazyLoad; loading blurs the rows meanwhile.
Columns
resizableColumns, reorderableColumns and columnSettings work as in the table; the toggler moves with the first visible column.
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Scroll height
scrollHeight keeps the header in place while the rows scroll; frozen columns stay while the table scrolls sideways.
Applications | 300 | Folder |
Editor | 220 | Folder |
editor.app | 180 | Application |
editor-docs.pdf | 40 | Document |
Player | 80 | Application |
Cloud | 50 | Folder |
backup-2025.zip | 30 | Archive |
photos.zip | 20 | Archive |
Desktop | 12 | Folder |
notes.txt | 2 | Text |
plan.xlsx | 10 | Spreadsheet |
Music | 640 | Folder |
Album | 640 | Folder |
track-01.mp3 | 8 | Audio |
Appearance
showGridlines, stripedRows, rowHover and size work as in the table.
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Design tokens
dt takes the table tokens of one tree table — here a tinted header and taller rows.
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |
Pass through
pt adds classes and styles to the table parts and to treeToggle.
Applications | 300 | Folder |
Editor | 220 | Folder |
Player | 80 | Application |
Cloud | 50 | Folder |
Desktop | 12 | Folder |
Music | 640 | Folder |