Frontmatter
| id | 8591 |
| title | Centralize TreeList expand and scroll logic to fix deep linking |
| state | Closed |
| labels | enhancementai |
| assignees | tobiu |
| createdAt | Jan 13, 2026, 12:01 PM |
| updatedAt | Jan 13, 2026, 12:22 PM |
| githubUrl | https://github.com/neomjs/neo/issues/8591 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Jan 13, 2026, 12:21 PM |
Centralize TreeList expand and scroll logic to fix deep linking
tobiu assigned to @tobiu on Jan 13, 2026, 12:21 PM
tobiu closed this issue on Jan 13, 2026, 12:21 PM

tobiu
Jan 13, 2026, 12:22 PM
Input from Gemini 3 Pro:
✦ Implemented
Neo.tree.List.expandAndScrollToItem(itemId)to centralize the logic for deep linking. RefactoredPortal.view.news.blog.MainContainerController,Portal.view.news.release.MainContainerController, andPortal.view.news.tickets.MainContainerControllerto use this new method.Changes pushed to
dev.Follow-up issues identified regarding horizontal scrolling and header styling will be tracked in a separate ticket.
Problem: A recent optimization in
Neo.tree.List(removing DOM for collapsed folders) broke the "deep linking" scroll behavior in the Portal app. Controllers currently implement inconsistent and brittle workarounds (manual timeouts or pollingwaitForDomRect) to handle expanding parents and scrolling to the newly mounted item.Solution:
expandAndScrollToItem(itemId)method inNeo.tree.Listthat handles the expansion, waits for the DOM node to be mounted (usingwaitForDomRect), and then scrolls it into view.MainContainerControllerfor Blog, Release, and Tickets in the Portal app to use this new method, ensuring consistency and reliability.Files to Modify:
src/tree/List.mjsapps/portal/view/news/blog/MainContainerController.mjsapps/portal/view/news/release/MainContainerController.mjsapps/portal/view/news/tickets/MainContainerController.mjs