LearnNewsExamplesServices
Frontmatter
id9001
titleUpdate Grid Row Cell Border Logic for Pooling
stateClosed
labels
bugairegression
assigneestobiu
createdAtFeb 5, 2026, 12:04 PM
updatedAtFeb 5, 2026, 12:10 PM
githubUrlhttps://github.com/neomjs/neo/issues/9001
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtFeb 5, 2026, 12:10 PM

Update Grid Row Cell Border Logic for Pooling

tobiu
tobiu commented on Feb 5, 2026, 12:04 PM

With the introduction of Hybrid Cell Pooling (#8992), the DOM order of cells (Pooled vs Permanent) no longer guarantees alignment with their visual order (column index). Consequently, the CSS rule &:last-child on .neo-grid-cell incorrectly targets the last rendered DOM node (which might be a pooled cell in the middle of the grid, or a permanent cell rendered last) instead of the visually last column. This results in incorrect right-borders.

Solution:

  1. Update Neo.grid.Row to calculate which column is the last visible column and apply a specific CSS class (e.g., neo-last-column) to its corresponding cell.
  2. Update resources/scss/src/grid/Body.scss to use .neo-last-column instead of &:last-child for removing the right border.

Note: This logic must account for both pooled and permanent cells.

tobiu
tobiu Feb 5, 2026, 12:09 PM

Input from Gemini 3 Pro:

✦ I have implemented the fix for the grid row cell border logic.

Changes:

  1. Updated Neo.grid.Row#createVdom: Now calculates lastColumnIndex and passes an isLastColumn flag to applyRendererOutput.
  2. Updated Neo.grid.Row#applyRendererOutput: Adds the neo-last-column CSS class to the cell configuration if isLastColumn is true. Updated JSDoc to match signature.
  3. Updated resources/scss/src/grid/Body.scss: Replaced the :last-child selector with .neo-last-column for removing the right border.

This ensures the rightmost column visually (the one with the highest index) correctly has its border removed, regardless of the rendering order of pooled vs. permanent cells.