@@ -38,6 +38,13 @@ export class ReadingStack {
38
38
*/
39
39
this . currentBookLoadedCallbacks_ = [ ] ;
40
40
41
+ /**
42
+ * Holds whether this folder is collapsed or not.
43
+ * @type {Map<BookContainer, boolean> }
44
+ * @private
45
+ */
46
+ this . folderCollapsedMap_ = new Map ( ) ;
47
+
41
48
getElem ( 'readingStackButton' ) . addEventListener ( 'click' , ( ) => this . toggleOpen ( ) ) ;
42
49
getElem ( 'readingStackOverlay' ) . addEventListener ( 'click' , ( ) => this . toggleOpen ( ) ) ;
43
50
}
@@ -129,6 +136,7 @@ export class ReadingStack {
129
136
book . removeEventListener ( BookEventType . LOADING_STARTED , this ) ;
130
137
}
131
138
this . books_ = [ ] ;
139
+ this . folderCollapsedMap_ . clear ( ) ;
132
140
this . currentBookNum_ = - 1 ;
133
141
this . renderStack_ ( ) ;
134
142
}
@@ -286,9 +294,16 @@ export class ReadingStack {
286
294
}
287
295
}
288
296
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 ) {
291
305
folderDiv . classList . toggle ( 'collapsed' ) ;
306
+ this . folderCollapsedMap_ . set ( folder , folderDiv . classList . contains ( 'collapsed' ) ) ;
292
307
}
293
308
294
309
// TODO: Do this better so that each change of state doesn't require a complete re-render?
@@ -334,7 +349,10 @@ export class ReadingStack {
334
349
folderNameSpan . textContent = ancestor . getName ( ) ;
335
350
folderDiv . appendChild ( folderNameSpan ) ;
336
351
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
+ }
338
356
curDiv . appendChild ( folderDiv ) ;
339
357
renderedContainerMap . set ( ancestor , folderDiv ) ;
340
358
}
0 commit comments