Component-based grid columns currently default to hideMode: 'removeDom' (inherited from Neo.grid.column.Base).
This enables cell pooling, which uses index-based IDs (e.g., __cell-0).
However, this breaks SortZone's "surgical DOM move" logic during drag-and-drop:
- ID Instability: Reordering columns changes the mapping of dataFields to indices.
- Restoration Failure:
SortZone restores content to the old ID (e.g., __cell-5), but the grid renders the column at a new ID (e.g., __cell-3).
- State Loss: This causes the VDOM engine to "replace" rather than "move" components, destroying internal state (Canvas, etc.) or leaving cells empty ("pruned").
The Fix:
Update Neo.grid.column.Component to default to hideMode: 'visibility'.
This ensures:
- Stable IDs: Cells use
__dataField IDs, which persist across reorders.
- Zero DOM Thrashing: Cells are toggled via visibility, avoiding insert/remove operations, aligning with the Grid's "Fixed-DOM-Order" strategy.
- Drag Stability:
SortZone can correctly restore content to the stable ID.
This will implicitly fix issues with GitHubOrgs, Heuristics, and other component columns.
Component-based grid columns currently default to
hideMode: 'removeDom'(inherited fromNeo.grid.column.Base). This enables cell pooling, which uses index-based IDs (e.g.,__cell-0).However, this breaks
SortZone's "surgical DOM move" logic during drag-and-drop:SortZonerestores content to the old ID (e.g.,__cell-5), but the grid renders the column at a new ID (e.g.,__cell-3).The Fix: Update
Neo.grid.column.Componentto default tohideMode: 'visibility'. This ensures:__dataFieldIDs, which persist across reorders.SortZonecan correctly restore content to the stable ID.This will implicitly fix issues with
GitHubOrgs,Heuristics, and other component columns.