LearnNewsExamplesServices
Frontmatter
id9614
titleGrid Multi-Body: Fix Horizontal Row Clipping & Scrollbar SCSS
stateClosed
labels
enhancementaigrid
assigneestobiu
createdAtMar 31, 2026, 5:56 PM
updatedAtApr 1, 2026, 11:43 PM
githubUrlhttps://github.com/neomjs/neo/issues/9614
authortobiu
commentsCount1
parentIssue9486
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtApr 1, 2026, 11:42 PM

Grid Multi-Body: Fix Horizontal Row Clipping & Scrollbar SCSS

Closedenhancementaigrid
tobiu
tobiu commented on Mar 31, 2026, 5:56 PM

Problem

In the new Multi-Body Grid architecture, horizontal scrolling is currently broken due to cell clipping.

  1. .neo-grid-row applies contain: strict and inherits the viewport width. Cells positioned with absolute left values beyond the viewport width are physically culled (clipped) by the browser.
  2. The decoupled HorizontalScrollbar is currently invisible. It lacks proper dimensions and SCSS styling.
  3. The horizontal sync relies on the HorizontalScrollbar which isn't updating its inner content scaling dynamically to match the actual virtual width of columns in the Center SubGrid.

Solution

  1. Remove generic width: 100% and apply the true virtual width of all active columns to .neo-grid-body-content. This ensures .neo-grid-row fully encompasses all cells, allowing them to render without triggering the contain: strict culling.
  2. Introduce resources/scss/src/grid/HorizontalScrollbar.scss to natively define overflow-x: auto; flex: none;.
  3. Update Container.mjs and Body.mjs to feed the exact virtualWidth calculated by the HeaderToolbar into horizontalScrollbar.contentWidth, properly scaling the track thumb.
tobiu added the enhancement label on Mar 31, 2026, 5:56 PM
tobiu added the ai label on Mar 31, 2026, 5:56 PM
tobiu added the grid label on Mar 31, 2026, 5:56 PM
tobiu assigned to @tobiu on Apr 1, 2026, 10:29 AM
tobiu added parent issue #9486 on Apr 1, 2026, 11:42 PM
tobiu closed this issue on Apr 1, 2026, 11:42 PM
tobiu
tobiu Apr 1, 2026, 11:43 PM

already resolved.