Skip to content

Commit 72eeedf

Browse files
committed
docs: remove any SortableJS refs, replace with native code
1 parent c2da076 commit 72eeedf

7 files changed

Lines changed: 29 additions & 30 deletions

File tree

‎.agents/plans/pinning-sticky-progress.md‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -853,9 +853,8 @@ permanent-pinning controls.
853853
854854
## User-observed status
855855
856-
- Initial load first failed in `getHeaderChildren()` because column resize assumed `_headers[1]` existed.
857-
- That was fixed by flattening the connected header collection.
858-
- SortableJS no longer assumes or creates a connected second header instance.
856+
- The initial column-resize failure from missing `_headers[1]` was fixed by traversing header
857+
elements across the existing regions in the single-viewport layout.
859858
- The user subsequently reported no more console errors before the Example 04 API conversion.
860859
- The user confirms that all Vanilla and framework Cypress CI workflows have been run repeatedly
861860
and pass, including the pinning/sticky, resize, reorder, RTL, variable-row-height, editor,
@@ -1024,7 +1023,7 @@ bands would still be a separate feature and product decision.
10241023
- Example 47's YTD definition now retains the shared sticky-candidate classes when adding its YTD-specific classes, so it keeps the sticky blue background even when it reaches its natural right edge and Q4 takes over the separator.
10251024
- Added a higher-specificity right-edge inset-shadow rule for header, header-row, and footer chrome so the first right-sticky column title/filter receives the same pinned separator cue as the body region without changing its width.
10261025
- Removed the non-user-facing Example 47 auto-scroll control and timer; the fixture now uses only normal manual grid scrolling.
1027-
- Draggable Grouping now tolerates the single-viewport layout: it creates a Sortable instance only for header containers that actually exist, instead of passing a removed right header (`null`) to SortableJS.
1026+
- Draggable Grouping now binds only to header regions present in the single-viewport layout.
10281027
- Pinned left/right edge header-row and footer cells use the measured header outer width without extending into the vertical-scrollbar gutter. This keeps an empty edge filter cell aligned with its data cells without overlapping its neighbor.
10291028
- The single horizontal scrollbar proxy now has an opaque canvas background, themed `scrollbar-color`, pointer events, and an isolated stacking context. Its z-index remains above grid rows but below application overlays such as Bulma navbar menus, and its track is aligned to the pane content edge.
10301029
- The docking scrollbar now uses `overflow-x: auto` and sizes its spacer from the natural docking content width. When all columns fit the viewport, the proxy has zero height and no horizontal track is shown; when overflow exists, its height still comes from the measured native scrollbar dimensions.
@@ -1122,9 +1121,9 @@ bands would still be a separate feature and product decision.
11221121
- Restored the invalid-hide alert contract for pinning. The canonical pinning validation
11231122
now checks the prospective visible set against the docking layout, so hiding the last
11241123
available center column is rejected without mutating the grid.
1125-
- Column reorder now creates Sortable instances for the persistent left, center,
1126-
and right docking wrappers and combines their order on drop. This keeps drag
1127-
auto-scroll and reorder functional after the old right pane is removed.
1124+
- Column reordering now reads the persistent left, center, and right docking
1125+
wrappers, keeping auto-scroll and reordering functional without the old right
1126+
pane.
11281127
- Sticky transitions now keep LTR proxy-scrolled header titles, header-row filters,
11291128
footer cells, and body cells in stable natural center-band DOM, applying only
11301129
compositor transforms when membership changes. This fixes the intermittent

‎docs/grid-functionalities/grouping-aggregators.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ The important thing to understand while working with `SlickGrid` is that Groupin
3131

3232
### Draggable Dropzone Location
3333

34-
Draggable grouping uses built-in drag and drop and supports RTL, mouse, and touch input.
35-
SortableJS is no longer required. Header reordering preserves hidden and non-reorderable columns
36-
and stays within each pinned or scrolling header region. Dropping a header into the grouping
37-
area changes grouping without firing `onColumnsReordered`.
34+
Draggable grouping uses built-in drag and drop with RTL, mouse, and touch support. Header
35+
reordering preserves hidden and non-reorderable columns and stays within each pinned or scrolling
36+
header region. Dropping a header into the grouping area changes grouping without firing
37+
`onColumnsReordered`.
3838

3939

4040
The Draggable Grouping can be located in either the Top-Header or the Pre-Header as described below.

‎frameworks/angular-slickgrid/docs/grid-functionalities/grouping-aggregators.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,10 @@ export class GridGroupingComponent implements OnInit, OnDestroy {
6565

6666
### Draggable Dropzone Location
6767

68-
Draggable grouping uses built-in drag and drop and supports RTL, mouse, and touch input.
69-
SortableJS is no longer required. Header reordering preserves hidden and non-reorderable columns
70-
and stays within each pinned or scrolling header region. Dropping a header into the grouping
71-
area changes grouping without firing `onColumnsReordered`.
68+
Draggable grouping uses built-in drag and drop with RTL, mouse, and touch support. Header
69+
reordering preserves hidden and non-reorderable columns and stays within each pinned or scrolling
70+
header region. Dropping a header into the grouping area changes grouping without firing
71+
`onColumnsReordered`.
7272

7373

7474
The Draggable Grouping can be located in either the Top-Header or the Pre-Header as described below.

‎frameworks/aurelia-slickgrid/docs/grid-functionalities/grouping-aggregators.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,10 +71,10 @@ export class Example {
7171

7272
### Draggable Dropzone Location
7373

74-
Draggable grouping uses built-in drag and drop and supports RTL, mouse, and touch input.
75-
SortableJS is no longer required. Header reordering preserves hidden and non-reorderable columns
76-
and stays within each pinned or scrolling header region. Dropping a header into the grouping
77-
area changes grouping without firing `onColumnsReordered`.
74+
Draggable grouping uses built-in drag and drop with RTL, mouse, and touch support. Header
75+
reordering preserves hidden and non-reorderable columns and stays within each pinned or scrolling
76+
header region. Dropping a header into the grouping area changes grouping without firing
77+
`onColumnsReordered`.
7878

7979

8080
The Draggable Grouping can be located in either the Top-Header or the Pre-Header as described below.

‎frameworks/slickgrid-react/docs/grid-functionalities/grouping-aggregators.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,10 @@ const Example: React.FC = () => {
7070

7171
### Draggable Dropzone Location
7272

73-
Draggable grouping uses built-in drag and drop and supports RTL, mouse, and touch input.
74-
SortableJS is no longer required. Header reordering preserves hidden and non-reorderable columns
75-
and stays within each pinned or scrolling header region. Dropping a header into the grouping
76-
area changes grouping without firing `onColumnsReordered`.
73+
Draggable grouping uses built-in drag and drop with RTL, mouse, and touch support. Header
74+
reordering preserves hidden and non-reorderable columns and stays within each pinned or scrolling
75+
header region. Dropping a header into the grouping area changes grouping without firing
76+
`onColumnsReordered`.
7777

7878

7979
The Draggable Grouping can be located in either the Top-Header or the Pre-Header as described below.

‎frameworks/slickgrid-vue/docs/grid-functionalities/grouping-aggregators.md‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ function vueGridReady(vueGrid: SlickgridVueInstance) {
7878

7979
### Draggable Dropzone Location
8080

81-
Draggable grouping uses built-in drag and drop and supports RTL, mouse, and touch input.
82-
SortableJS is no longer required. Header reordering preserves hidden and non-reorderable columns
83-
and stays within each pinned or scrolling header region. Dropping a header into the grouping
84-
area changes grouping without firing `onColumnsReordered`.
81+
Draggable grouping uses built-in drag and drop with RTL, mouse, and touch support. Header
82+
reordering preserves hidden and non-reorderable columns and stays within each pinned or scrolling
83+
header region. Dropping a header into the grouping area changes grouping without firing
84+
`onColumnsReordered`.
8585

8686

8787
The Draggable Grouping can be located in either the Top-Header or the Pre-Header as described below.

‎packages/common/src/core/slickColumnReorderDrag.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ export function setupColumnReorderDrag(options: ColumnReorderDragOption): { dest
176176
const isDraggable = (el: HTMLElement): boolean =>
177177
el.matches(draggableSelector) && (!unorderableColumnCssClass || !el.classList.contains(unorderableColumnCssClass));
178178

179-
// Mirror SortableJS's Firefox/Linux fallback detection so the mouse-based path is used only for the broken browser combo.
179+
// Firefox on Linux needs the mouse fallback because native drag images are broken in that browser environment.
180180
const isFfLinux = typeof navigator !== 'undefined' && /firefox/i.test(navigator.userAgent) && /linux/i.test(navigator.userAgent);
181181

182182
const getColumnIds = (parent: HTMLElement): string[] =>
@@ -348,8 +348,8 @@ export function setupColumnReorderDrag(options: ColumnReorderDragOption): { dest
348348
finalizeDrag(e);
349349
};
350350

351-
// Finalize on `drop` as well as `dragend` (like SortableJS did). Some drag sources
352-
// dispatch `drop` without a following `dragend`; finalizing here ensures
351+
// Finalize on `drop` as well as `dragend`. Some drag sources dispatch `drop`
352+
// without a following `dragend`; finalizing here ensures
353353
// setColumns()/onColumnsReordered always run. When a real browser fires both events,
354354
// the `dragend` handler above sees draggedEl === null (reset by finalizeDrag) and
355355
// returns immediately, so there is no double-finalization.

0 commit comments

Comments
 (0)