Skip to content

Commit bcd054c

Browse files
committed
Fix issue #79: Remember which folders have been collapsed in the Reading Stack
1 parent 79a797b commit bcd054c

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

Diff for: code/reading-stack.js

+21-3
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)