@recruitler/drag-drop
Version:
A forked version of Angular/'s drag-drop CDK.
52 lines (51 loc) • 1.82 kB
TypeScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { Direction } from '@angular/cdk/bidi';
/**
* Function that is used to determine whether an item can be sorted into a particular index.
* @docs-private
*/
export type SortPredicate<T> = (index: number, item: T) => boolean;
/**
* Item that can be sorted within `DropListSortStrategy`. This is a limited representation of
* `DragRef` used to avoid circular dependencies. It is intended to only be used within
* `DropListSortStrategy`.
* @docs-private
*/
export interface DropListSortStrategyItem {
isDragging(): boolean;
getPlaceholderElement(): HTMLElement;
getRootElement(): HTMLElement;
_sortFromLastPointerPosition(): void;
getVisibleElement(): HTMLElement;
}
/**
* Strategy used to sort and position items within a drop list.
* @docs-private
*/
export interface DropListSortStrategy<T extends DropListSortStrategyItem> {
direction: Direction;
start(items: readonly T[]): void;
nest(item: T, nestIndex: number, currentNestIndex: number): void;
unnest(item: T, nestIndex: number): void;
sort(item: T, pointerX: number, pointerY: number, pointerDelta: {
x: number;
y: number;
}): {
previousIndex: number;
currentIndex: number;
} | null;
enter(item: T, pointerX: number, pointerY: number, index?: number): void;
withItems(items: readonly T[]): void;
withSortPredicate(predicate: SortPredicate<T>): void;
reset(): void;
getActiveItemsSnapshot(): readonly T[];
getItemIndex(item: T): number;
getActiveItem(index: number): T;
updateOnScroll(topDifference: number, leftDifference: number): void;
}