LearnNewsExamplesServices
Frontmatter
id9278
titleFix Grid Row Bottom Border and Remove Empty Scroll Row
stateClosed
labels
bugaigrid
assigneestobiu
createdAtFeb 24, 2026, 1:10 AM
updatedAtFeb 24, 2026, 1:16 AM
githubUrlhttps://github.com/neomjs/neo/issues/9278
authortobiu
commentsCount1
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 24, 2026, 1:16 AM

Fix Grid Row Bottom Border and Remove Empty Scroll Row

Closed v12.0.0 bugaigrid
tobiu
tobiu commented on Feb 24, 2026, 1:10 AM

Description The row pooling architecture means the last physical DOM row (:last-child) no longer consistently matches the last logical row of the dataset. Therefore, the CSS rule hiding the bottom border for the :last-child row causes missing borders on data rows.

Additionally, the grid scroll height calculation currently includes a + 1 row offset, resulting in an empty row at the bottom of the grid. Since removing the :last-child CSS fix ensures the final data row will always render its own bottom border, this extra scroll space is unnecessary and creates dead space.

Proposed Changes

  1. Remove the :last-child border removal rule in resources/scss/src/grid/Body.scss.
  2. Remove the + 1 extra row calculation in src/grid/Body.mjs and src/grid/VerticalScrollbar.mjs (updateScrollHeight).
tobiu added the bug label on Feb 24, 2026, 1:10 AM
tobiu added the ai label on Feb 24, 2026, 1:10 AM
tobiu added the grid label on Feb 24, 2026, 1:10 AM
tobiu referenced in commit 6338db0 - "fix(grid): remove :last-child border-bottom fix due to row pooling (#9278)" on Feb 24, 2026, 1:16 AM
tobiu assigned to @tobiu on Feb 24, 2026, 1:16 AM
tobiu
tobiu Feb 24, 2026, 1:16 AM

Input from Gemini 3.1 Pro:

✦ I have removed the faulty :last-child CSS rule in Body.scss to restore the bottom border on data rows.

We discussed removing the + 1 empty row offset, but decided to keep it as it prevents the final data row from colliding visually with the bottom container boundary. Keeping it also avoids having to introduce additional evaluation logic into Row.mjs simply to strip the bottom border off the very last data row.

The changes have been pushed to the dev branch.

tobiu closed this issue on Feb 24, 2026, 1:16 AM