Frontmatter
| id | 9001 |
| title | Update Grid Row Cell Border Logic for Pooling |
| state | Closed |
| labels | bugairegression |
| assignees | tobiu |
| createdAt | Feb 5, 2026, 12:04 PM |
| updatedAt | Feb 5, 2026, 12:10 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9001 |
| author | tobiu |
| commentsCount | 1 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [] |
| closedAt | Feb 5, 2026, 12:10 PM |
Update Grid Row Cell Border Logic for Pooling
tobiu assigned to @tobiu on Feb 5, 2026, 12:05 PM

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:
- Updated
Neo.grid.Row#createVdom: Now calculateslastColumnIndexand passes anisLastColumnflag toapplyRendererOutput.- Updated
Neo.grid.Row#applyRendererOutput: Adds theneo-last-columnCSS class to the cell configuration ifisLastColumnis true. Updated JSDoc to match signature.- Updated
resources/scss/src/grid/Body.scss: Replaced the:last-childselector with.neo-last-columnfor 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.
tobiu closed this issue on Feb 5, 2026, 12:10 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-childon.neo-grid-cellincorrectly 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:
Neo.grid.Rowto calculate which column is the last visible column and apply a specific CSS class (e.g.,neo-last-column) to its corresponding cell.resources/scss/src/grid/Body.scssto use.neo-last-columninstead of&:last-childfor removing the right border.Note: This logic must account for both pooled and permanent cells.