@@ -15,39 +15,41 @@ class ListItem extends React.Component {
1515
1616 constructor ( props ) {
1717 super ( props ) ;
18- const { data, isRoot } = this . props ;
18+ const { data, isRoot, identifier } = this . props ;
1919 this . state = {
2020 data,
2121 isRoot,
22+ identifier,
2223 active : [ ] ,
2324 currentUrl : '' ,
25+ expandedPanels : [ ] ,
2426 } ;
2527 this . toggleActive = this . toggleActive . bind ( this ) ;
28+ this . toggleExpansion = this . toggleExpansion . bind ( this ) ; // Bind toggleExpansion method
2629 }
2730
2831 componentDidMount ( ) {
2932 this . setState ( { currentUrl : window . location . pathname } ) ;
3033 }
3134
3235 setActive = ( name ) => {
33- const { active } = this . state ;
36+ const { active, expandedPanels } = this . state ;
3437 if ( active . indexOf ( name ) === - 1 ) {
35- this . setState ( ( prev ) => ( { active : [ ...prev . active , name ] } ) ) ;
36- const { expandedPanels } = this . state ;
37- if ( ! expandedPanels ) {
38- this . setState ( ( ) => ( { expandedPanels : [ name ] } ) ) ;
38+ this . setState ( ( prev ) => ( { active : [ ...prev . active , name ] } ) ) ;
39+ if ( ! expandedPanels . includes ( name ) ) { // Check if name is already in expandedPanels
40+ this . setState ( ( prev ) => ( { expandedPanels : [ ...prev . expandedPanels , name ] } ) ) ;
3941 }
4042 }
41- } // sets a given list item as active
43+ } ;
4244
4345
4446 toggleExpansion ( identifier ) {
4547 const { expandedPanels } = this . state ;
46- if ( expandedPanels ?. indexOf ( identifier ) === - 1 ) {
48+ if ( expandedPanels . includes ( identifier ) ) {
49+ const updatedExpandedPanels = expandedPanels . filter ( ( panel ) => panel !== identifier ) ;
50+ this . setState ( { expandedPanels : updatedExpandedPanels } ) ;
51+ } else {
4752 this . setState ( ( prev ) => ( { expandedPanels : [ ...prev . expandedPanels , identifier ] } ) ) ;
48- } else if ( expandedPanels ) {
49- expandedPanels . splice ( expandedPanels . indexOf ( identifier ) , 1 ) ;
50- this . setState ( ( ) => ( { expandedPanels : [ ...expandedPanels ] } ) ) ;
5153 }
5254 }
5355
@@ -121,7 +123,7 @@ class ListItem extends React.Component {
121123 return (
122124 < ul
123125 key = { `${ name } -${ uuidv4 ( ) } ` }
124- className = { ` ${ ( this . state . expandedPanels ?. indexOf ( name ) === 0 ) ? 'active' : 'inactive' } ${ isRoot ? ' root' : '' } ` }
126+ className = { ` ${ ( this . state . expandedPanels ?. indexOf ( name ) !== - 1 ) ? 'active' : 'inactive' } ${ isRoot ? ' root' : '' } ` }
125127 >
126128 < li className = { `parent${ this . inUrl ( `/${ name } /` ) ? ' currentUrl text_green' : '' } ` } onClick = { this . toggleActive } identifier = { name } >
127129 < svg onClick = { ( e ) => { this . toggleActive ( e ) ; this . toggleExpansion ( name ) } } identifier = { name } className = { `inline float_left relative folder-icon parent_caret${ ( this . state . expandedPanels ?. indexOf ( name ) !== - 1 ) ? ' active_parent_caret' : '' } ` } xmlns = "http://www.w3.org/2000/svg" fill = "none" height = "24"
@@ -184,7 +186,6 @@ const LeftNav = () => {
184186 return (
185187 < >
186188 < div className = "leftNav bg-gray-50 px-14 pt-5" >
187- < Link to = { "/tutorials/" } className = "homepage_btn" > Testsigma Tutorials</ Link >
188189 < ListItem data = { data . leftNavLinks . value } isRoot />
189190 </ div >
190191 </ >
0 commit comments