Components

Tree Table

A table whose rows expand to reveal nested child rows.

php artisan blatui:add tree-table
Department Owner Headcount Budget
Engineering
A. Rivera 48 $6.4M
Platform
J. Okafor 18 $2.5M
Infrastructure
M. Lind 9 $1.3M
Developer Tools
S. Park 9 $1.2M
Product
D. Mehta 30 $3.9M
Web
L. Chen 16 $2.1M
Mobile
R. Boateng 14 $1.8M
Sales
P. Nguyen 26 $3.1M
Enterprise
K. Adebayo 12 $1.7M
SMB
T. Wallace 14 $1.4M
Operations
C. Bianchi 11 $1.2M
<x-ui.tree-table
    class="max-w-2xl"
    :columns="[
        ['key' => 'name', 'label' => 'Department'],
        ['key' => 'owner', 'label' => 'Owner'],
        ['key' => 'headcount', 'label' => 'Headcount', 'align' => 'right'],
        ['key' => 'budget', 'label' => 'Budget', 'align' => 'right'],
    ]"
    :rows="[
        [
            'name' => 'Engineering',
            'owner' => 'A. Rivera',
            'headcount' => 48,
            'budget' => '$6.4M',
            'expanded' => true,
            'children' => [
                [
                    'name' => 'Platform',
                    'owner' => 'J. Okafor',
                    'headcount' => 18,
                    'budget' => '$2.5M',
                    'expanded' => true,
                    'children' => [
                        ['name' => 'Infrastructure', 'owner' => 'M. Lind', 'headcount' => 9, 'budget' => '$1.3M'],
                        ['name' => 'Developer Tools', 'owner' => 'S. Park', 'headcount' => 9, 'budget' => '$1.2M'],
                    ],
                ],
                [
                    'name' => 'Product',
                    'owner' => 'D. Mehta',
                    'headcount' => 30,
                    'budget' => '$3.9M',
                    'children' => [
                        ['name' => 'Web', 'owner' => 'L. Chen', 'headcount' => 16, 'budget' => '$2.1M'],
                        ['name' => 'Mobile', 'owner' => 'R. Boateng', 'headcount' => 14, 'budget' => '$1.8M'],
                    ],
                ],
            ],
        ],
        [
            'name' => 'Sales',
            'owner' => 'P. Nguyen',
            'headcount' => 26,
            'budget' => '$3.1M',
            'children' => [
                ['name' => 'Enterprise', 'owner' => 'K. Adebayo', 'headcount' => 12, 'budget' => '$1.7M'],
                ['name' => 'SMB', 'owner' => 'T. Wallace', 'headcount' => 14, 'budget' => '$1.4M'],
            ],
        ],
        [
            'name' => 'Operations',
            'owner' => 'C. Bianchi',
            'headcount' => 11,
            'budget' => '$1.2M',
        ],
    ]"
/>

Copyable

File
my-app
public
favicon.ico
index.html
src
components
Button.js
Header.js
App.js
index.js
.gitignore
package.json
README.md
{{-- `copyable` adds a button that copies the hierarchy as a markdown ├──/└──/│ tree. --}}
<x-ui.tree-table
    copyable
    class="max-w-md"
    :columns="[['key' => 'name', 'label' => 'File']]"
    :rows="[
        ['name' => 'my-app', 'expanded' => true, 'children' => [
            ['name' => 'public', 'expanded' => true, 'children' => [
                ['name' => 'favicon.ico'],
                ['name' => 'index.html'],
            ]],
            ['name' => 'src', 'expanded' => true, 'children' => [
                ['name' => 'components', 'expanded' => true, 'children' => [
                    ['name' => 'Button.js'],
                    ['name' => 'Header.js'],
                ]],
                ['name' => 'App.js'],
                ['name' => 'index.js'],
            ]],
            ['name' => '.gitignore'],
            ['name' => 'package.json'],
            ['name' => 'README.md'],
        ]],
    ]"
/>

API Reference

Props, slots and exposed methods for <x-ui.tree-table>.

Props

Prop Type Default Description
columns* array [] The column definitions, in display order. The first column is the tree column: it carries the expand/collapse toggle and indents nested rows. See Each column below.
rows* array [] The hierarchical row data. Each row is keyed by the column keys and may carry a "children" array of rows with the same shape, nested to any depth. See Each row below.
copyable bool false Show a button that copies the hierarchy to the clipboard as a markdown tree (├──/└──/│), using the first column as the label.

* Required.

Each column

Prop Type Default Description
key* string — The row-data key this column reads its cell value from.
label string — The header text for the column.
align string 'left' Horizontal alignment of the column's header and cells.
left center right

Each row

Prop Type Default Description
children array — Optional nested child rows, each with the same shape as a top-level row. Rows with children render an expand/collapse toggle in the tree column.
expanded bool false Start this branch expanded on first render. Only meaningful on a row that has children.