Treetable
Angular Bootstrap 5 Treetable plugin
The Treetable plugin can render your data with a simple HTML. You simply create a HTML markup for your table nested within a div tag with a "treetable" class.
Note: Read the API tab to find all available options and advanced customization
Basic example
Create default Treetable by appending a table element into a
div with a .treetable class. Add MdbTreeTable
directive to table element and MdbTreeTableRow
directive to tr element. Use dataSource input to set
up the table. Adding children property to dataSource
will create a nested row structure.
| Name | Size | Type |
|---|---|---|
| Personal | 15mb | Folder |
| index | 5mb | html |
| index | 5mb | html |
| my-cat | 0mb | webp |
| Documents | 350mb | Folder |
| Bill | 200mb | |
| Newspapers mentions | 50mb | |
| Ebooks | 100mb | zip |
| Songs | 30mb | Folder |
| Ode to JS | 10mb | mp3 |
| One more style | 10mb | mp3 |
| Bjork-Its-Oh-So-Quiet | 10mb | mp3 |
| Images | 1,5gb | Folder |
| Album-cover | 500mb | jpeg |
| Naruto-background | 500mb | png |
| Sasuke-background | 500mb | webp |
<div class="treetable d-flex w-100">
<table class="table" mdbTreeTable #treeTable="mdbTreeTable" [dataSource]="dataSource">
<thead>
<tr>
<th scope="col" *ngFor="let header of headers">{{ header | titlecase }}</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let rowData of treeTable.data" scope="row" [mdbTreeTableRow]="rowData">
<td>
{{ rowData.name }}
</td>
<td>
{{ rowData.size }}
</td>
<td>
{{ rowData.type }}
</td>
</tr>
</tbody>
</table>
</div>
import { Component } from '@angular/core';
interface FileType {
name: string;
size: string;
type: string;
children?: FileType[];
}
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
})
export class AppComponent {
headers = ['Name', 'Size', 'Type'];
dataSource: FileType[] = [
{
name: 'Personal',
size: '15mb',
type: 'Folder',
children: [
{
name: 'index',
size: '5mb',
type: 'html',
},
{
name: 'index',
size: '5mb',
type: 'html',
},
{
name: 'my-cat',
size: '0mb',
type: 'webp',
},
{
name: 'Documents',
size: '350mb',
type: 'Folder',
children: [
{
name: 'Bill',
size: '200mb',
type: 'pdf',
},
{
name: 'Newspapers mentions',
size: '50mb',
type: 'PDF',
},
{
name: 'Ebooks',
size: '100mb',
type: 'zip',
},
],
},
{
name: 'Songs',
size: '30mb',
type: 'Folder',
children: [
{
name: 'Ode to JS',
size: '10mb',
type: 'mp3',
},
{
name: 'One more style',
size: '10mb',
type: 'mp3',
},
{
name: 'Bjork-Its-Oh-So-Quiet',
size: '10mb',
type: 'mp3',
},
],
},
],
},
{
name: 'Images',
size: '1,5gb',
type: 'Folder',
children: [
{
name: 'Album-cover',
size: '5mb',
type: 'html',
},
{
name: 'Naruto-background',
size: '500mb',
type: 'jpeg',
},
{
name: 'Sasuke-background',
size: '500mb',
type: 'png',
},
],
},
];
};
TreeTable - API
Installation
To install and configure the plugin follow our Plugins Installation Guide. Please remember to update all the plugin names and import paths. You can find all the necessary information in the Import section.
npm i git+https://oauth2:ACCESS_TOKEN@git.mdbootstrap.com/mdb/angular/mdb5/plugins/prd/treetable
Import
import { MdbTreeTableModule } from 'mdb-angular-treetable';
…
@NgModule ({
...
imports: [MdbTreeTableModule],
...
})
@import 'mdb-angular-treetable/scss/treetable.scss';
Inputs
MdbTreeTableDirective
| Name | Type | Default | Description |
|---|---|---|---|
dataSource
|
T[] | [] |
Data for treeTable construction. |
Outputs
MdbTreeTableDirective
| Name | Description |
|---|---|
collapse
|
This event fires when a user collapses a row. You can access the data of collapsed row. |
expand
|
This event fires when a user expands a row. You can access the data of expanded row. |
Methods
MdbTreeTableDirective
| Name | Description |
|---|---|
collapseAll
|
Collapses all rows |
expandAll
|
Expands all rows |