vue-devui
Version:
DevUI components based on Vite and Vue3
138 lines (137 loc) • 4.62 kB
TypeScript
import { Subject } from 'rxjs';
import { EventEmitter } from './preserve-next-event-emitter';
import { DragDropService } from './drag-drop.service';
import { DirectiveBinding, InjectionKey, VNode } from 'vue';
import { NgDirectiveBase } from './directive-base';
export type DropIndexFlag = 'beforeAll' | 'afterAll';
export interface IDroppableBinding {
dragOverClass?: string;
dropScope?: string | Array<string>;
placeholderTag?: string;
placeholderStyle?: Record<string, string>;
placeholderText?: string;
allowDropOnItem?: boolean;
dragOverItemClass?: string;
nestingTargetRect?: {
height?: number;
width?: number;
};
switchWhileCrossEdge?: boolean;
defaultDropPosition?: 'closest' | 'before' | 'after';
dropSortCountSelector: string;
dropSortVirtualScrollOption?: {
totalLength?: number;
startIndex?: number;
};
}
export interface IDroppableListener {
'@dragEnterEvent'?: (_: any) => void;
'@dragOverEvent'?: (_: any) => void;
'@dragLeaveEvent'?: (_: any) => void;
'@dropEvent'?: (_: any) => void;
}
export declare class DropEvent {
nativeEvent: any;
dragData: any;
batchDragData: any;
dropSubject: Subject<any>;
dropIndex?: number;
dragFromIndex?: number;
dropOnItem?: boolean;
dropOnOrigin?: boolean;
constructor(event: any, data: any, dropSubject: Subject<any>, dropIndex?: number, dragFromIndex?: number, dropOnItem?: boolean, dropOnOrigin?: boolean, batchDragData?: Array<any>);
}
export interface DragPlaceholderInsertionEvent {
command: 'insertBefore' | 'append' | 'remove';
container?: HTMLElement;
relatedEl?: Element;
}
export interface DragPlaceholderInsertionIndexEvent {
command: 'insertBefore' | 'append' | 'remove';
index?: number;
}
export declare class DroppableDirective extends NgDirectiveBase<IDroppableBinding, IDroppableListener> {
static INSTANCE_KEY: string;
static TOKEN: InjectionKey<DroppableDirective>;
hostListenerMap?: {
[key: string]: string;
} | undefined;
dragEnterEvent: EventEmitter<any>;
dragOverEvent: EventEmitter<any>;
dragLeaveEvent: EventEmitter<any>;
dropEvent: EventEmitter<DropEvent>;
dragOverClass?: string;
dropScope: string | Array<string>;
placeholderTag: string;
placeholderStyle: any;
placeholderText: string;
allowDropOnItem: boolean;
dragOverItemClass?: string;
nestingTargetRect?: {
height?: number;
width?: number;
};
switchWhileCrossEdge: boolean;
defaultDropPosition: 'closest' | 'before' | 'after';
dropSortCountSelector?: string;
dropSortVirtualScrollOption?: {
totalLength?: number;
startIndex?: number;
};
private dropFlag?;
private sortContainer;
private sortDirection?;
private sortDirectionZMode?;
private placeholder;
private dragCount;
private dropIndex?;
private dragStartSubscription?;
private dragEndSubscription?;
private dropEndSubscription?;
private overElement?;
private dragPartEventSub?;
private allowDropCache?;
private dragElIndex?;
placeholderInsertionEvent: Subject<DragPlaceholderInsertionEvent>;
placeholderRenderEvent: Subject<any>;
document: Document;
el: {
nativeElement: any;
};
private dragDropService;
constructor(el: HTMLElement, dragDropService: DragDropService);
ngOnInit(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
dragEnter(e: DragEvent): void;
dragOver(e: DragEvent): void;
dragLeave(e: DragEvent): void;
drop(e: DragEvent): void;
allowDrop(e: DragEvent): boolean;
private dropSortCountSelectorFilterFn;
private findSortableEl;
private calcPosition;
private calcPositionOutside;
setPlaceholder: () => void;
private insertPlaceholder;
private isDragPlaceholderPosition;
private hitDragOriginPlaceholder;
private removePlaceholder;
private removeDragoverItemClass;
private checkSelfFromIndex;
private getRealIndex;
getBoundingRectAndRealPosition(targetElement: HTMLElement): any;
getSortContainer(): any;
}
declare const _default: {
mounted(el: HTMLElement & {
[props: string]: any;
}, binding: DirectiveBinding<IDroppableBinding & IDroppableListener>, vNode: VNode): void;
updated(el: HTMLElement & {
[props: string]: any;
}, binding: DirectiveBinding<IDroppableBinding & IDroppableListener>): void;
beforeUnmount(el: HTMLElement & {
[props: string]: any;
}): void;
};
export default _default;