LearnNewsExamplesServices
Frontmatter
id8976
titleFix Grid Cell Animations During Column Reordering
stateClosed
labels
bugairegression
assigneestobiu
createdAtFeb 4, 2026, 1:13 AM
updatedAtFeb 4, 2026, 1:19 AM
githubUrlhttps://github.com/neomjs/neo/issues/8976
authortobiu
commentsCount1
parentIssue8964
subIssues[]
subIssuesCompleted0
subIssuesTotal0
blockedBy[]
blocking[]
closedAtFeb 4, 2026, 1:19 AM

Fix Grid Cell Animations During Column Reordering

Closed v12.0.0 bugairegression
tobiu
tobiu commented on Feb 4, 2026, 1:13 AM

The Grid Column Reordering functionality (SortZone) has partially regressed following the introduction of Neo.grid.Row components. While the header items still animate correctly, the corresponding column cells in the grid body no longer sync with these movements.

Observed Regressions:

  1. Missing "Hide Original" Behavior: When dragging a header, the original column cells should be hidden (or opacity reduced) to indicate they are being moved. This currently fails.
  2. Missing Cell Slide Animation: In the dev branch, when a header item is dragged and other headers slide to accommodate it, the corresponding cells in the grid body also slide horizontally to match the new column positions. In the feature branch, the cells remain static until the drop operation completes.

Root Cause: The SortZone logic (and potentially Grid.Body logic) likely relies on manipulating the deep VDOM of the grid body directly (e.g., finding all cells for a column index and adjusting their left style). With Neo.grid.Row components, the Grid.Body's VDOM contains component placeholders, not the deep cell structure. The logic attempting to animate these cells is failing to "reach through" the component boundary or is targeting the wrong VDOM nodes.

Goal:

  • Restore the "Hide Original" behavior for cells during drag start.
  • Restore the live "Slide Animation" for cells during the drag operation to sync with header movements.
  • Refactor SortZone (or Grid.Body) methods to correctly target and update Row component states or VDOM to reflect these temporary positional changes.
tobiu added the bug label on Feb 4, 2026, 1:13 AM
tobiu added the ai label on Feb 4, 2026, 1:13 AM
tobiu added the regression label on Feb 4, 2026, 1:13 AM
tobiu added parent issue #8964 on Feb 4, 2026, 1:13 AM
tobiu assigned to @tobiu on Feb 4, 2026, 1:14 AM
tobiu referenced in commit 7c039bd - "fix: Restore Grid Cell Animations During Column Reordering (#8976)" on Feb 4, 2026, 1:18 AM
tobiu
tobiu Feb 4, 2026, 1:18 AM

Input from Gemini 3 Pro:

✦ Restored cell animations and "Hide Original" behavior during drag operations.

Fix:

  • Updated onDragStart and switchItems in SortZone.mjs to force a deep update (body.updateDepth = -1) when modifying cell styles.
  • This ensures that style changes applied to disjoint Row components (visibility, position) are correctly collected and transmitted to the VDOM worker, syncing the grid body with the header drag proxy animations.
tobiu closed this issue on Feb 4, 2026, 1:19 AM