From a132b3634e57f553019f0dc2f2cdb33b03d164aa Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Tue, 2 Dec 2025 22:05:43 -0500 Subject: [PATCH] Fix left/right arrow expand/collapse logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Now checks actual DOM state instead of collapsedNodes set, which fixes behavior with depth-based auto-collapse. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../templates/family_tree_interactive.html | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/kjvstudy_org/templates/family_tree_interactive.html b/kjvstudy_org/templates/family_tree_interactive.html index 96f13fb..c33f60d 100644 --- a/kjvstudy_org/templates/family_tree_interactive.html +++ b/kjvstudy_org/templates/family_tree_interactive.html @@ -762,7 +762,9 @@ document.addEventListener('keydown', (e) => { e.preventDefault(); if (selectedIndex >= 0 && selectedIndex < visibleNodes.length) { const id = visibleNodes[selectedIndex].dataset.id; - if (collapsedNodes.has(id)) { + const childContainer = document.querySelector(`.children-container[data-parent="${id}"]`); + // Expand if currently collapsed + if (childContainer && childContainer.classList.contains('collapsed')) { toggleNode(id); } } @@ -773,14 +775,10 @@ document.addEventListener('keydown', (e) => { e.preventDefault(); if (selectedIndex >= 0 && selectedIndex < visibleNodes.length) { const id = visibleNodes[selectedIndex].dataset.id; - if (!collapsedNodes.has(id)) { - const person = familyTreeData[id]; - const hasExpandable = currentRoot === 'jesus' - ? (person.parents && person.parents.length > 0) - : (person.children && person.children.length > 0); - if (hasExpandable) { - toggleNode(id); - } + const childContainer = document.querySelector(`.children-container[data-parent="${id}"]`); + // Collapse if currently expanded + if (childContainer && !childContainer.classList.contains('collapsed')) { + toggleNode(id); } } break;