Phase 6 of the Multi-Body Epic (#9486).
The current Neo.draggable.grid.header.toolbar.SortZone assumes a single contiguous Neo.grid.header.Toolbar containing all columns.
In the V2 Multi-Body architecture, the header is split into three independent toolbars (start, center, end).
The Challenge:
When a user drags a column header from the center toolbar into the start toolbar (to lock it), the SortZone must support cross-container drag and drop.
Requirements:
1. Cross-Container DD:
- The
SortZone must be refactored to allow dragging items between the three sibling header toolbars. This likely means registering the sort zone at a higher level (the wrapper) or enabling communication between the three independent zones.
2. Surgical DOM Move Proxy Update:
- The current
createDragProxy() logic builds a proxy that perfectly mimics the entire grid height. In the multi-body setup, dragging a column from Center to Left means the proxy needs to traverse across the physical subgrid boundaries. The proxy logic must be updated to build its structure based on the SubGrid it originated from, but be allowed to float over the entire Grid Container.
3. State Mutation & Collection Handoff:
- Dropping a column into a different toolbar must automatically update the
locked configuration of that column (e.g., dropping into the left toolbar sets locked: 'start').
- Dropping the column must trigger logic that removes the column definition from the source collection and inserts it into the target collection.
4. Visual Indicators:
- The proxy and drop indicators must seamlessly transition across the boundaries of the split header containers.
5. State Sync:
- The collection change must automatically trigger the layout engine to redraw the SubGrids (and potentially toggle
removeDom states if a zone becomes empty or active).
Phase 6 of the Multi-Body Epic (#9486).
The current
Neo.draggable.grid.header.toolbar.SortZoneassumes a single contiguousNeo.grid.header.Toolbarcontaining all columns.In the V2 Multi-Body architecture, the header is split into three independent toolbars (
start,center,end).The Challenge: When a user drags a column header from the
centertoolbar into thestarttoolbar (to lock it), theSortZonemust support cross-container drag and drop.Requirements:
1. Cross-Container DD:
SortZonemust be refactored to allow dragging items between the three sibling header toolbars. This likely means registering the sort zone at a higher level (the wrapper) or enabling communication between the three independent zones.2. Surgical DOM Move Proxy Update:
createDragProxy()logic builds a proxy that perfectly mimics the entire grid height. In the multi-body setup, dragging a column from Center to Left means the proxy needs to traverse across the physical subgrid boundaries. The proxy logic must be updated to build its structure based on the SubGrid it originated from, but be allowed to float over the entire Grid Container.3. State Mutation & Collection Handoff:
lockedconfiguration of that column (e.g., dropping into the left toolbar setslocked: 'start').4. Visual Indicators:
5. State Sync:
removeDomstates if a zone becomes empty or active).