LearnNewsExamplesServices
Frontmatter
id9488
titleGrid Multi-Body: SubGrid Row Pooling & Vertical Sync Refactoring
stateClosed
labels
enhancementaigrid
assigneestobiu
createdAtMar 16, 2026, 7:15 PM
updatedAtMar 31, 2026, 3:16 PM
githubUrlhttps://github.com/neomjs/neo/issues/9488
authortobiu
commentsCount1
parentIssue9486
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtMar 31, 2026, 3:16 PM

Grid Multi-Body: SubGrid Row Pooling & Vertical Sync Refactoring

Closedenhancementaigrid
tobiu
tobiu commented on Mar 16, 2026, 7:15 PM

Phase 3 of the Multi-Body Epic (#9486).

Currently, Neo.grid.Body assumes it is the sole render target for the grid, handling its own full store range calculations and scrollManager events.

In the Multi-Body architecture, the Body component must become a "SubGrid".

Requirements:

1. Vertical Sync Overhaul:

  • The actual vertical scrollTop value comes from the outer wrapper (neo-grid-body-wrapper).
  • The ScrollManager must be updated to listen to this wrapper, not the individual bodies.
  • When a vertical scroll occurs, the ScrollManager (or a central BodyManager inside Container) must calculate the startIndex and endIndex of the visible rows once.

2. Synchronized Rendering (createViewData):

  • The three SubGrids (start, center, end) must not calculate their own startIndex/endIndex.
  • They must receive the exact same index range from the orchestrator.
  • All active SubGrids must execute their row pooling loops synchronously, mapping the same recordId to the same physical pool index, ensuring they receive the identical translateY offset to stay vertically aligned.

3. Component Refactoring (Isolated Pooling):

  • Strip out the logic in grid.Body that currently assumes it owns the vertical scrollbar.
  • Expose setter methods or configs that allow the parent Container to drive the createViewData cycle externally for all active bodies simultaneously.
  • Each SubGrid must manage its own pool of Row instances based exclusively on its specific column collection (Left, Center, or Right).
tobiu added the enhancement label on Mar 16, 2026, 7:15 PM
tobiu added the ai label on Mar 16, 2026, 7:15 PM
tobiu added the grid label on Mar 16, 2026, 7:15 PM
tobiu added parent issue #9486 on Mar 16, 2026, 7:15 PM
tobiu assigned to @tobiu on Mar 17, 2026, 7:59 PM
tobiu referenced in commit 286a8db - "fix: Finalize Grid Multi-Body Row Pooling & Vertical Sync (#9488)" on Mar 31, 2026, 3:16 PM
tobiu
tobiu Mar 31, 2026, 3:16 PM

Resolved: Finalized Grid Multi-Body Row Pooling & Vertical Sync. The ScrollManager now uses the centralized body wrapper for vertical scrolling, preventing desync across multiple split bodies. GridRowScrollPinning logic was also updated to listen to the new wrapper.

tobiu closed this issue on Mar 31, 2026, 3:16 PM