Having trouble getting help?
Contact Support
Contact Support
Accordion tree in EJ2 JavaScript TreeView control
28 Jan 202510 minutes to read
An Accordion is an interface in which a list of items can be collapsed or expanded, but only one list can be expanded at a time. You can customize the TreeView to make it behave like an accordion. Refer to the following code sample to create an accordion tree.
/**
* Accordion tree sample
*/
// Hierarchical data source for TreeView control
var continents = [
{
code: "AF", name: "Africa", countries: [
{ code: "NGA", name: "Nigeria" },
{ code: "EGY", name: "Egypt" },
{ code: "ZAF", name: "South Africa" }
]
},
{
code: "AS", name: "Asia", countries: [
{ code: "CHN", name: "China" },
{ code: "IND", name: "India", selected: true },
{ code: "JPN", name: "Japan" }
]
},
{
code: "EU", name: "Europe", countries: [
{ code: "DNK", name: "Denmark" },
{ code: "FIN", name: "Finland" },
{
code: "AUT", name: "Austria",
}
]
},
{
code: "NA", name: "North America", countries: [
{ code: "USA", name: "United States of America" },
{ code: "CUB", name: "Cuba" },
{ code: "MEX", name: "Mexico" }
]
},
{
code: "OC", name: "Oceania", countries: [
{ code: "AUS", name: "Australia" },
{ code: "NZL", name: "New Zealand" },
{ code: "WSM", name: "Samoa" }
]
},
];
// Render TreeView with cssClass
var tree1 = new ej.navigations.TreeView({
fields: { dataSource: continents, id: "code", text: "name", child: "countries" },
nodeSelected: nodeSelect,
cssClass: ("accordiontree")
});
tree1.appendTo('#tree');
function nodeSelect(args) {
if (args.node.classList.contains('e-level-1')) {
this.collapseAll();
this.expandAll([args.node]);
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Essential JS 2 for TreeView </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Essential JS 2 for TreeView UI Control">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-base/styles/material.css" rel="stylesheet">
<link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-inputs/styles/material.css" rel="stylesheet">
<link href="https://cdn.syncfusion.com/ej2/29.1.33/ej2-navigations/styles/material.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/29.1.33/dist/ej2.min.js" type="text/javascript"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="treeparent">
<div id="tree"></div>
</div>
</div>
<script>
var ele = document.getElementById('container');
if (ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
<style>
#treeparent {
display: block;
max-width: 350px;
max-height: 350px;
margin: auto;
overflow: auto;
padding-top: 50px;
}
.accordiontree .e-list-item.e-level-1>.e-fullrow,
.accordiontree .e-list-item.e-level-1.e-active>.e-fullrow,
.accordiontree .e-list-item.e-level-1.e-hover>.e-fullrow,
.accordiontree .e-list-item.e-level-1>.e-fullrow,
.accordiontree .e-list-item.e-level-1.e-active.e-hover>.e-fullrow {
background-color: darkslateblue;
border-color: darkslateblue;
}
.accordiontree .e-list-item.e-level-1>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-1.e-active>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-1.e-hover>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-1.e-active.e-hover>.e-text-content .e-list-text {
color: white;
font-size: 16px;
}
.accordiontree .e-list-item.e-level- .e-icons.e-icon-collapsible,
.accordiontree .e-list-item.e-level-1 .e-icons.e-icon-collapsible,
.accordiontree .e-list-item.e-level-1 .e-icon-expandable {
display: none
}
.accordiontree .e-list-item.e-level-2>.e-fullrow,
.accordiontree .e-list-item.e-level-2.e-active>.e-fullrow,
.accordiontree .e-list-item.e-level-2.e-hover>.e-fullrow,
.accordiontree .e-list-item.e-level-2>.e-fullrow,
.accordiontree .e-list-item.e-level-2.e-active.e-hover>.e-fullrow {
background-color: white;
border-color: white;
}
.accordiontree .e-list-item.e-level-2>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-2.e-active>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-2.e-hover>.e-text-content .e-list-text,
.accordiontree .e-list-item.e-level-2.e-active.e-hover>.e-text-content .e-list-text {
color: blue;
font-size: 14px;
}
</style>
</body>
</html>
#container {
visibility: hidden;
}
#loader {
color: #008cff;
height: 40px;
width: 30%;
position: absolute;
font-family: 'Helvetica Neue', 'calibiri';
font-size: 14px;
top: 45%;
left: 45%;
}