Styled byLS TreeView
<TreeView [Mode]="'Single'" [Items]="Basic"></TreeView>
<TreeView [Mode]="'Multiple'" [Items]="Basic" (SelectedItems)="SelectedItems($event)"></TreeView>
Basic: TreeItem [] = [
{Id: 1, Expanded: false, Content: {Text: 'Applications'}, Children: [{Id: 11, Content: {Text: 'WebStorm'}}]},
{
Id: 2, Content: {Text: 'Files'}, Children: [
{
Id: 21, PId: 2, Content: {Text: 'tree-view'}, Children: [
{Id: 211, PId: 21, Content: {Text: 'tree-view.component.html'}},
{Id: 212, PId: 21, Content: {Text: 'tree-view.component.ts'}}
]
},
{
Id: 22, PId: 2, Expanded: false, Content: {Text: 'Models'}, Children: [
{Id: 221, PId: 22, Content: {Text: 'index.ts'}}
]
},
]
}
] as TreeItem[];
SelectedItems(results: TreeItem[]) {
console.log('Selected (raw)', results, 'Ids', results.map(x => x.Id));
}
Custom icons, border and animation
<TreeView [Mode]="'Single'" [Items]="Mail" (SelectedItems)="SelectedItems($event)"></TreeView>
Mail: TreeItem [] = [
{Id: 1, Content: {Text: 'All Mail', Icon: 'fa-solid fa-envelope'}},
{Id: 2, Content: {Text: 'Trash', Icon: 'fa-solid fa-trash'}},
{
Id: 3, Content: {Text: 'Categories', Icon: 'fa-solid fa-folder'}, Children: [
{Id: 31, PId: 3, Content: {Text: 'Social', Icon: 'fa-solid fa-user-group', Caption: '13'},},
{Id: 32, PId: 3, Content: {Text: 'Updates', Icon: 'fa-solid fa-circle-info', Caption: '2,666'},},
{Id: 33, PId: 3, Content: {Text: 'Forums', Icon: 'fa-solid fa-comments', Caption: '5,366'},},
{Id: 34, PId: 3, Content: {Text: 'Promotions', Icon: 'fa-solid fa-tag', Caption: '842'},},
]
},
{Id: 4, Content: {Text: 'History', Icon: 'fa-solid fa-folder'}},
] as TreeItem[];
<TreeView [Mode]="'Single'" [Items]="Customized" (SelectedItems)="SelectedItems($event)"></TreeView>
Disabled: TreeItem [] = [
{Id: 1, Content: {Text: 'One'}, Children: [{Id: 11, Content: {Text: 'Two'}}, {Id: 12, Content: {Text: 'Tree'}}]},
{Separator: true} as TreeItem,
{
Id: 2,
Expanded: false, Disabled: true, Content: {Text: 'Four'}, Children: [{Content: {Text: 'NaN'}}]
},
{Separator: true} as TreeItem,
{
Id: 3, Content: {Text: 'Five'}, Children: [
{
Id: 31, PId: 3, Expanded: false, Content: {Text: 'Six'}, Children: [
{Id: 311, PId: 31, Content: {Text: 'Seven'}},
{Id: 312, PId: 31, Content: {Text: 'Eight'}}
]
},
]
}
] as TreeItem[];
<TreeView [Mode]="'Multiple'" [Items]="Categories" [Sort]="Sort"
(SelectedItems)="SelectedItems($event)"></TreeView>
Categories: TreeItem [] = this.FillCategories();
Sort: boolean = false;
FillCategories(): TreeItem[] {
const cats: TreeItem[] = [];
const Parents: any[] = [
{Id: 1, Text: 'Balkans Tours'},
{Id: 2, Text: 'Spain Tours'},
{Id: 3, Text: 'Italy Tours'},
];
Parents.forEach(x => cats.push({
Id: x.Id,
Content: {Text: x.Text,},
Expanded: (x.Id == 2),
Children: []
} as unknown as TreeItem));
for (let i = 10; i <= 30; i++) {
let parentId = Math.floor(Math.random() * Parents.length) + 1;
const parent = cats.find(x => x.Id === parentId);
parent?.Children.push({Id: i, Content: {Text: this.Word(4) + ' Tour',}, PId: parentId} as TreeItem);
}
return cats;
}