By default, all Accordion panels are collapsible. You can customize the Accordion to keep one panel as expanded state always. This is applicable for Single
expand mode.
import {Accordion, ExpandEventArgs, AccordionClickArgs} from '@syncfusion/ej2-navigations';
import { enableRipple } from '@syncfusion/ej2-base';
enableRipple(true);
let clickEle: HTMLElement;
let accordion: Accordion = new Accordion({
expandMode: 'Single',
clicked: clicked,
expanding: beforeExpand,
items: [
{ header: 'ASP.NET', expanded:'true', content: 'Microsoft ASP.NET is a set of technologies in the Microsoft .NET Framework for building Web applications and XML Web services.' },
{ header: 'ASP.NET MVC', content: 'The Model-View-Controller (MVC) architectural pattern separates an application into three main components: the model, the view, and the controller.' },
{ header: 'JavaScript', content: 'JavaScript (JS) is an interpreted computer programming language. It was originally implemented as part of web browsers so that client-side scripts could interact with the user, control the browser, communicate asynchronously, and alter the document content that was displayed.' },
]
});
accordion.appendTo('#element');
function clicked (e: AccordionClickArgs): void {
clickEle = (e.originalEvent.target as Element).closest('.e-acrdn-header');
}
function beforeExpand (e: ExpandEventArgs):void {
let expandCount: number = this.element.querySelectorAll('.e-selected').length;
let ele: HTMLElement= this.element.querySelectorAll('.e-selected')[0];
if (ele) {
ele = ele.firstChild as Element;
}
if (expandCount === 1 && ele === clickEle) {
e.cancel = true;
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Essential JS 2 Accordion</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="Typescript Toolbar Controls" />
<meta name="author" content="Syncfusion" />
<link href="index.css" rel="stylesheet" />
<link href="//cdn.syncfusion.com/ej2/21.2.3/material.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
<script src="systemjs.config.js"></script>
</head>
<body>
<div id='loader'>LOADING....</div>
<div id='container'>
<div id='element'></div>
<br/><br/>
<div id='result'></div>
</div>
</body>
</html>