User-driven column pinning
Auto-generated from the source archive. Do not edit by hand — rerun
catalyst-changelog-syncinstead.
What changed
Section titled “What changed”<au-column-toggle>lock button callscolumn.pin('left')/column.pin(false), replacing the dead local signal. The toggle item’s sticky state is derived fromcolumn.getIsPinned().- Columns declared with
sticky: 'left' | 'right'inDataTableColumnDefare hard locks: the lock button renders with a badge and is not clickable. The dev’s intent is preserved. - The toggle splits into two
cdkDropListzones (sticky-left and scroll), separated by an<hr>with a label. Drag-and-drop is restricted to the same zone. <au-data-table>switches from a manualstickyOffsetscomputed to TanStack’s nativecolumn.getStart('left')/column.getAfter('right')— the contiguous-sticky invariant is now framework-enforced.- Pinning + visibility + order persist via
localStoragekeyed byroute + tableId. Reset clears the entry. A soft warning fires when pinned-column widths exceed 50% of the visible viewport.
Why it matters
Section titled “Why it matters”The lock button used to be a stub. Users can now pin columns from the UI, drag-reorder within each zone, and have the layout survive a refresh. The migration to TanStack pinning also makes the “sticky columns are contiguous” invariant a framework guarantee instead of a manual offset computation, removing a class of layout drift bugs that could surface as the table state grew.