Frontmatter
| id | 9528 |
| title | Real-time cell resizing during grid column drag:move |
| state | Closed |
| labels | enhancementaigrid |
| assignees | tobiu |
| createdAt | Mar 20, 2026, 2:20 PM |
| updatedAt | Mar 20, 2026, 5:35 PM |
| githubUrl | https://github.com/neomjs/neo/issues/9528 |
| author | tobiu |
| commentsCount | 2 |
| parentIssue | null |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [x] 9529 Add lightweight cell resizing method to grid.Body |
| blocking | [] |
| closedAt | Mar 20, 2026, 5:33 PM |
Real-time cell resizing during grid column drag:move
tobiu assigned to @tobiu on Mar 20, 2026, 2:21 PM
tobiu cross-referenced by #9529 on Mar 20, 2026, 5:21 PM
tobiu marked this issue as being blocked by #9529 on Mar 20, 2026, 5:23 PM

tobiu
Mar 20, 2026, 5:33 PM
Input from Gemini 3.1 Pro:
✦ The real-time cell resizing during grid column
drag:movehas been successfully implemented.This was achieved by introducing a new, lightweight
updateCellPositionsmethod insrc/grid/Body.mjs(handled in prerequisite ticket #9529) and hooking it into theonDragMoveevent ofsrc/grid/header/plugin/Resizable.mjs.By utilizing
updateDepth: 2and directly mutating the VDOM and JS cache in memory, we bypass the expensivecreateViewData()row-render cycle, allowing the grid body cells to seamlessly and performantly match the header width in real-time. The finaldrag:endevent remains untouched to ensure flex columns and viewport buffers are cleanly recalculated viapassSizeToBody().Closing this ticket as completed.
tobiu closed this issue on Mar 20, 2026, 5:33 PM

tobiu
Mar 20, 2026, 5:35 PM
Description
Currently, grid column resizing updates the header visually during
drag:move, but the grid body cells only synchronize their widths upondrag:end(drop). To provide a more cohesive and native-feeling user experience, the grid body cells should dynamically resize in real-time as the header resize handle is dragged.Context
src/grid/Body.mjs,src/grid/Row.mjs).src/draggable/grid/header/toolbar/SortZone.mjs).Goal
src/grid/header/plugin/Resizable.mjsto trigger a width synchronization to the grid body ondrag:move.columnPositionscache in the grid body and applies the necessary style deltas directly to the active VDOM nodes to prevent full re-renders on every pixel move.drag:moveevents is necessary to maintain smooth 60fps performance during complex resizing.