@@ -38,6 +38,13 @@ export class ReadingStack {
3838 */
3939 this . currentBookLoadedCallbacks_ = [ ] ;
4040
41+ /**
42+ * Holds whether this folder is collapsed or not.
43+ * @type {Map<BookContainer, boolean> }
44+ * @private
45+ */
46+ this . folderCollapsedMap_ = new Map ( ) ;
47+
4148 getElem ( 'readingStackButton' ) . addEventListener ( 'click' , ( ) => this . toggleOpen ( ) ) ;
4249 getElem ( 'readingStackOverlay' ) . addEventListener ( 'click' , ( ) => this . toggleOpen ( ) ) ;
4350 }
@@ -129,6 +136,7 @@ export class ReadingStack {
129136 book . removeEventListener ( BookEventType . LOADING_STARTED , this ) ;
130137 }
131138 this . books_ = [ ] ;
139+ this . folderCollapsedMap_ . clear ( ) ;
132140 this . currentBookNum_ = - 1 ;
133141 this . renderStack_ ( ) ;
134142 }
@@ -286,9 +294,16 @@ export class ReadingStack {
286294 }
287295 }
288296
289- /** Toggles an individual folder expanded or collapsed. */
290- toggleFolderExpandCollapse_ ( folderDiv ) {
297+ /**
298+ * Toggles an individual folder expanded or collapsed. Updates the collapse
299+ * map to remember which folders have been collapsed.
300+ * @param {HTMLDivElement } folderDiv
301+ * @param {BookContainer } folder
302+ * @private
303+ */
304+ toggleFolderExpandCollapse_ ( folderDiv , folder ) {
291305 folderDiv . classList . toggle ( 'collapsed' ) ;
306+ this . folderCollapsedMap_ . set ( folder , folderDiv . classList . contains ( 'collapsed' ) ) ;
292307 }
293308
294309 // TODO: Do this better so that each change of state doesn't require a complete re-render?
@@ -334,7 +349,10 @@ export class ReadingStack {
334349 folderNameSpan . textContent = ancestor . getName ( ) ;
335350 folderDiv . appendChild ( folderNameSpan ) ;
336351 const zippyButtonEl = folderDiv . querySelector ( 'span.zippyButton' ) ;
337- zippyButtonEl . addEventListener ( 'click' , ( evt ) => this . toggleFolderExpandCollapse_ ( folderDiv ) ) ;
352+ zippyButtonEl . addEventListener ( 'click' , ( evt ) => this . toggleFolderExpandCollapse_ ( folderDiv , ancestor ) ) ;
353+ if ( this . folderCollapsedMap_ . get ( ancestor ) === true ) {
354+ this . toggleFolderExpandCollapse_ ( folderDiv , ancestor ) ;
355+ }
338356 curDiv . appendChild ( folderDiv ) ;
339357 renderedContainerMap . set ( ancestor , folderDiv ) ;
340358 }
0 commit comments