ngx-virtual-dnd 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-virtual-dnd",
3
- "version": "2.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "A performant drag-and-drop library for Angular that works seamlessly with virtual scrolling",
5
5
  "keywords": [
6
6
  "angular",
@@ -81,54 +81,6 @@ interface DragStartEvent {
81
81
  /** 0-indexed position in the source list (for screen reader announcements) */
82
82
  sourceIndex: number;
83
83
  }
84
- /**
85
- * Event emitted during drag movement.
86
- */
87
- interface DragMoveEvent {
88
- /** Unique identifier for the draggable item */
89
- draggableId: string;
90
- /** ID of the droppable container the item originated from */
91
- sourceDroppableId: string;
92
- /** ID of the droppable currently being hovered, or null */
93
- targetDroppableId: string | null;
94
- /** ID of the item to insert before, or null */
95
- placeholderId: string | null;
96
- /** Current cursor position */
97
- position: CursorPosition;
98
- /** Current 0-indexed placeholder position (for screen reader announcements) */
99
- targetIndex: number | null;
100
- }
101
- /**
102
- * Event emitted when an item enters a droppable container.
103
- */
104
- interface DragEnterEvent {
105
- /** ID of the droppable being entered */
106
- droppableId: string;
107
- /** Information about the dragged item */
108
- draggedItem: DraggedItem;
109
- }
110
- /**
111
- * Event emitted when an item leaves a droppable container.
112
- */
113
- interface DragLeaveEvent {
114
- /** ID of the droppable being left */
115
- droppableId: string;
116
- /** Information about the dragged item */
117
- draggedItem: DraggedItem;
118
- }
119
- /**
120
- * Event emitted while hovering over a droppable container.
121
- */
122
- interface DragOverEvent {
123
- /** ID of the droppable being hovered */
124
- droppableId: string;
125
- /** Information about the dragged item */
126
- draggedItem: DraggedItem;
127
- /** ID of the item the placeholder should appear before */
128
- placeholderId: string | null;
129
- /** Current cursor position */
130
- position: CursorPosition;
131
- }
132
84
  /**
133
85
  * Source information for a drop event.
134
86
  */
@@ -584,6 +536,13 @@ declare class AutoScrollService {
584
536
  * Call this when a drag ends.
585
537
  */
586
538
  stopMonitoring(): void;
539
+ /**
540
+ * Override the cursor position used for edge detection.
541
+ * When set, #tick() uses this instead of DragStateService.cursorPosition().
542
+ * Used by constrainToContainer to provide a position without grabOffset distortion.
543
+ * @internal
544
+ */
545
+ setCursorOverride(position: CursorPosition): void;
587
546
  /**
588
547
  * Check if auto-scrolling is currently active.
589
548
  */
@@ -701,13 +660,6 @@ interface VirtualScrollItemContext<T> {
701
660
  /** Whether this item is "sticky" (always rendered) */
702
661
  isSticky: boolean;
703
662
  }
704
- /**
705
- * Event emitted when the visible range changes.
706
- */
707
- interface VisibleRangeChange {
708
- start: number;
709
- end: number;
710
- }
711
663
  /**
712
664
  * A virtual scroll container that only renders visible items.
713
665
  *
@@ -815,10 +767,6 @@ declare class VirtualScrollContainerComponent<T> implements OnInit, AfterViewIni
815
767
  * Effective sticky item IDs - combines user-provided IDs with auto-sticky dragged item.
816
768
  */
817
769
  protected readonly effectiveStickyIds: _angular_core.Signal<string[]>;
818
- /** Emits when the visible range changes */
819
- visibleRangeChange: _angular_core.OutputEmitterRef<VisibleRangeChange>;
820
- /** Emits when scroll position changes */
821
- scrollPositionChange: _angular_core.OutputEmitterRef<number>;
822
770
  /** Total height of all items (for scrollbar) */
823
771
  protected readonly totalHeight: _angular_core.Signal<number>;
824
772
  /** Transform offset for content wrapper (position of first rendered item) */
@@ -864,7 +812,7 @@ declare class VirtualScrollContainerComponent<T> implements OnInit, AfterViewIni
864
812
  */
865
813
  scrollBy(delta: number): void;
866
814
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VirtualScrollContainerComponent<any>, never>;
867
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualScrollContainerComponent<any>, "vdnd-virtual-scroll", never, { "itemTemplate": { "alias": "itemTemplate"; "required": true; "isSignal": true; }; "scrollContainerId": { "alias": "scrollContainerId"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": true; "isSignal": true; }; "dynamicItemHeight": { "alias": "dynamicItemHeight"; "required": false; "isSignal": true; }; "containerHeight": { "alias": "containerHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "stickyItemIds": { "alias": "stickyItemIds"; "required": false; "isSignal": true; }; "itemIdFn": { "alias": "itemIdFn"; "required": true; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "droppableId": { "alias": "droppableId"; "required": false; "isSignal": true; }; "autoStickyDraggedItem": { "alias": "autoStickyDraggedItem"; "required": false; "isSignal": true; }; }, { "visibleRangeChange": "visibleRangeChange"; "scrollPositionChange": "scrollPositionChange"; }, never, never, true, never>;
815
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualScrollContainerComponent<any>, "vdnd-virtual-scroll", never, { "itemTemplate": { "alias": "itemTemplate"; "required": true; "isSignal": true; }; "scrollContainerId": { "alias": "scrollContainerId"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": true; "isSignal": true; }; "dynamicItemHeight": { "alias": "dynamicItemHeight"; "required": false; "isSignal": true; }; "containerHeight": { "alias": "containerHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "stickyItemIds": { "alias": "stickyItemIds"; "required": false; "isSignal": true; }; "itemIdFn": { "alias": "itemIdFn"; "required": true; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "droppableId": { "alias": "droppableId"; "required": false; "isSignal": true; }; "autoStickyDraggedItem": { "alias": "autoStickyDraggedItem"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
868
816
  }
869
817
 
870
818
  /**
@@ -1069,18 +1017,8 @@ declare class VirtualSortableListComponent<T> {
1069
1017
  constrainToContainer: _angular_core.InputSignal<boolean>;
1070
1018
  /** Emits when an item is dropped on this list */
1071
1019
  drop: _angular_core.OutputEmitterRef<DropEvent>;
1072
- /** Emits when a dragged item enters this list */
1073
- dragEnter: _angular_core.OutputEmitterRef<DragEnterEvent>;
1074
- /** Emits when a dragged item leaves this list */
1075
- dragLeave: _angular_core.OutputEmitterRef<DragLeaveEvent>;
1076
- /** Emits while a dragged item is over this list */
1077
- dragOver: _angular_core.OutputEmitterRef<DragOverEvent>;
1078
- /** Emits when the visible range changes */
1079
- visibleRangeChange: _angular_core.OutputEmitterRef<VisibleRangeChange>;
1080
- /** Emits when scroll position changes */
1081
- scrollPositionChange: _angular_core.OutputEmitterRef<number>;
1082
1020
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<VirtualSortableListComponent<any>, never>;
1083
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualSortableListComponent<any>, "vdnd-sortable-list", never, { "droppableId": { "alias": "droppableId"; "required": true; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": true; "isSignal": true; }; "dynamicItemHeight": { "alias": "dynamicItemHeight"; "required": false; "isSignal": true; }; "itemIdFn": { "alias": "itemIdFn"; "required": true; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": true; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "droppableData": { "alias": "droppableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "containerHeight": { "alias": "containerHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "constrainToContainer": { "alias": "constrainToContainer"; "required": false; "isSignal": true; }; }, { "drop": "drop"; "dragEnter": "dragEnter"; "dragLeave": "dragLeave"; "dragOver": "dragOver"; "visibleRangeChange": "visibleRangeChange"; "scrollPositionChange": "scrollPositionChange"; }, never, never, true, never>;
1021
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<VirtualSortableListComponent<any>, "vdnd-sortable-list", never, { "droppableId": { "alias": "droppableId"; "required": true; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": true; "isSignal": true; }; "dynamicItemHeight": { "alias": "dynamicItemHeight"; "required": false; "isSignal": true; }; "itemIdFn": { "alias": "itemIdFn"; "required": true; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": true; "isSignal": true; }; "trackByFn": { "alias": "trackByFn"; "required": false; "isSignal": true; }; "droppableData": { "alias": "droppableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "containerHeight": { "alias": "containerHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "constrainToContainer": { "alias": "constrainToContainer"; "required": false; "isSignal": true; }; }, { "drop": "drop"; }, never, never, true, never>;
1084
1022
  }
1085
1023
 
1086
1024
  /**
@@ -1292,12 +1230,8 @@ declare class DraggableDirective implements OnInit, OnDestroy {
1292
1230
  lockAxis: _angular_core.InputSignal<"x" | "y" | null>;
1293
1231
  /** Emits when drag starts */
1294
1232
  dragStart: _angular_core.OutputEmitterRef<DragStartEvent>;
1295
- /** Emits during drag movement */
1296
- dragMove: _angular_core.OutputEmitterRef<DragMoveEvent>;
1297
1233
  /** Emits when drag ends */
1298
1234
  dragEnd: _angular_core.OutputEmitterRef<DragEndEvent>;
1299
- /** Emits when ready-to-drag state changes (after delay passes) */
1300
- dragReadyChange: _angular_core.OutputEmitterRef<boolean>;
1301
1235
  readonly isPending: _angular_core.Signal<boolean>;
1302
1236
  /** Whether this element is currently being dragged (based on global drag state) */
1303
1237
  readonly isDragging: _angular_core.Signal<boolean>;
@@ -1325,7 +1259,7 @@ declare class DraggableDirective implements OnInit, OnDestroy {
1325
1259
  */
1326
1260
  protected onEscape(): boolean;
1327
1261
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DraggableDirective, never>;
1328
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DraggableDirective, "[vdndDraggable]", never, { "vdndDraggable": { "alias": "vdndDraggable"; "required": true; "isSignal": true; }; "vdndDraggableGroup": { "alias": "vdndDraggableGroup"; "required": false; "isSignal": true; }; "vdndDraggableData": { "alias": "vdndDraggableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; "dragThreshold": { "alias": "dragThreshold"; "required": false; "isSignal": true; }; "dragDelay": { "alias": "dragDelay"; "required": false; "isSignal": true; }; "lockAxis": { "alias": "lockAxis"; "required": false; "isSignal": true; }; }, { "dragStart": "dragStart"; "dragMove": "dragMove"; "dragEnd": "dragEnd"; "dragReadyChange": "dragReadyChange"; }, never, never, true, never>;
1262
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DraggableDirective, "[vdndDraggable]", never, { "vdndDraggable": { "alias": "vdndDraggable"; "required": true; "isSignal": true; }; "vdndDraggableGroup": { "alias": "vdndDraggableGroup"; "required": false; "isSignal": true; }; "vdndDraggableData": { "alias": "vdndDraggableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; "dragThreshold": { "alias": "dragThreshold"; "required": false; "isSignal": true; }; "dragDelay": { "alias": "dragDelay"; "required": false; "isSignal": true; }; "lockAxis": { "alias": "lockAxis"; "required": false; "isSignal": true; }; }, { "dragStart": "dragStart"; "dragEnd": "dragEnd"; }, never, never, true, never>;
1329
1263
  }
1330
1264
 
1331
1265
  /**
@@ -1373,12 +1307,6 @@ declare class DroppableDirective implements OnInit, OnDestroy {
1373
1307
  autoScrollConfig: _angular_core.InputSignal<Partial<AutoScrollConfig>>;
1374
1308
  /** Constrain drag preview and placeholder to container boundaries */
1375
1309
  constrainToContainer: _angular_core.InputSignal<boolean>;
1376
- /** Emits when a dragged item enters this droppable */
1377
- dragEnter: _angular_core.OutputEmitterRef<DragEnterEvent>;
1378
- /** Emits when a dragged item leaves this droppable */
1379
- dragLeave: _angular_core.OutputEmitterRef<DragLeaveEvent>;
1380
- /** Emits while a dragged item is over this droppable */
1381
- dragOver: _angular_core.OutputEmitterRef<DragOverEvent>;
1382
1310
  /** Emits when an item is dropped on this droppable */
1383
1311
  drop: _angular_core.OutputEmitterRef<DropEvent>;
1384
1312
  /** Whether this droppable is currently being targeted */
@@ -1405,7 +1333,7 @@ declare class DroppableDirective implements OnInit, OnDestroy {
1405
1333
  */
1406
1334
  getScrollHeight(): number;
1407
1335
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DroppableDirective, never>;
1408
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DroppableDirective, "[vdndDroppable]", never, { "vdndDroppable": { "alias": "vdndDroppable"; "required": true; "isSignal": true; }; "vdndDroppableGroup": { "alias": "vdndDroppableGroup"; "required": false; "isSignal": true; }; "vdndDroppableData": { "alias": "vdndDroppableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "constrainToContainer": { "alias": "constrainToContainer"; "required": false; "isSignal": true; }; }, { "dragEnter": "dragEnter"; "dragLeave": "dragLeave"; "dragOver": "dragOver"; "drop": "drop"; }, never, never, true, never>;
1336
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DroppableDirective, "[vdndDroppable]", never, { "vdndDroppable": { "alias": "vdndDroppable"; "required": true; "isSignal": true; }; "vdndDroppableGroup": { "alias": "vdndDroppableGroup"; "required": false; "isSignal": true; }; "vdndDroppableData": { "alias": "vdndDroppableData"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "autoScrollEnabled": { "alias": "autoScrollEnabled"; "required": false; "isSignal": true; }; "autoScrollConfig": { "alias": "autoScrollConfig"; "required": false; "isSignal": true; }; "constrainToContainer": { "alias": "constrainToContainer"; "required": false; "isSignal": true; }; }, { "drop": "drop"; }, never, never, true, never>;
1409
1337
  }
1410
1338
 
1411
1339
  /**
@@ -1714,4 +1642,4 @@ declare function insertAt<T>(list: T[], item: T, index: number): T[];
1714
1642
  declare function removeAt<T>(list: T[], index: number): T[];
1715
1643
 
1716
1644
  export { AutoScrollService, ContentHeaderDirective, DragPlaceholderComponent, DragPreviewComponent, DragStateService, DraggableDirective, DroppableDirective, DroppableGroupDirective, DynamicHeightStrategy, END_OF_LIST, ElementCloneService, FixedHeightStrategy, INITIAL_DRAG_STATE, KeyboardDragService, OverlayContainerService, PlaceholderComponent, PositionCalculatorService, ScrollableDirective, VDND_GROUP_TOKEN, VDND_SCROLL_CONTAINER, VDND_VIRTUAL_VIEWPORT, VirtualContentComponent, VirtualForDirective, VirtualScrollContainerComponent, VirtualSortableListComponent, VirtualViewportComponent, applyMove, insertAt, isNoOpDrop, moveItem, removeAt, reorderItems };
1717
- export type { AutoScrollConfig, CursorPosition, DragEndEvent, DragEnterEvent, DragLeaveEvent, DragMoveEvent, DragOverEvent, DragPreviewContext, DragStartEvent, DragState, DraggedItem, DropDestination, DropEvent, DropSource, GrabOffset, PlaceholderContext, VdndGroupContext, VdndScrollContainer, VdndVirtualViewport, VirtualForContext, VirtualScrollItemContext, VirtualScrollStrategy, VisibleRangeChange };
1645
+ export type { AutoScrollConfig, CursorPosition, DragEndEvent, DragPreviewContext, DragStartEvent, DragState, DraggedItem, DropDestination, DropEvent, DropSource, GrabOffset, PlaceholderContext, VdndGroupContext, VdndScrollContainer, VdndVirtualViewport, VirtualForContext, VirtualScrollItemContext, VirtualScrollStrategy };