vue-devui
Version:
DevUI components based on Vite and Vue3
120 lines (119 loc) • 4.02 kB
TypeScript
import { Subject, Subscription } from 'rxjs';
import { EventEmitter, PreserveNextEventEmitter } from './preserve-next-event-emitter';
import { DragDropService } from './drag-drop.service';
import { DirectiveBinding, InjectionKey, VNode } from 'vue';
import { NgDirectiveBase } from './directive-base';
import { DragPreviewDirective } from './drag-preview.directive';
export interface IDraggableBinding {
dragData?: any;
dragHandle?: string;
dragEffect?: string;
dragScope?: string | Array<string>;
dragHandleClass?: string;
dragOverClass?: string;
disabled?: boolean;
enableDragFollow?: boolean;
dragFollowOptions?: {
appendToBody?: boolean;
};
originPlaceholder?: {
show?: boolean;
tag?: string;
style?: {
[cssProperties: string]: string;
};
text?: string;
removeDelay?: number;
};
dragIdentity?: any;
dragItemParentName?: string;
dragItemChildrenName?: string;
}
export interface IDraggableListener {
'@dragStartEvent'?: (_: any) => void;
'@dragEvent'?: (_: any) => void;
'@dragEndEvent'?: (_: any) => void;
'@dropEndEvent'?: (_: any) => void;
}
export declare class DraggableDirective extends NgDirectiveBase<IDraggableBinding, IDraggableListener> {
static INSTANCE_KEY: string;
static TOKEN: InjectionKey<DraggableDirective>;
hostBindingMap?: {
[key: string]: string;
} | undefined;
draggable: boolean;
dragData?: any;
dragScope: string | Array<string>;
dragHandle?: string;
dragHandleClass: string;
dragOverClass?: string;
dragEffect: string;
get disabled(): boolean;
set disabled(value: boolean);
private _disabled;
dragStartEvent: EventEmitter<any>;
dragEvent: PreserveNextEventEmitter<any>;
dragEndEvent: EventEmitter<any>;
dropEndEvent: PreserveNextEventEmitter<any>;
document: Document;
private mouseOverElement;
enableDragFollow: boolean;
dragFollowOptions?: {
appendToBody?: boolean;
};
originPlaceholder?: {
show?: boolean;
tag?: string;
style?: {
[cssProperties: string]: string;
};
text?: string;
removeDelay?: number;
};
dragIdentity: any;
dragItemParentName: string;
dragItemChildrenName: string;
dragsSub: Subscription;
destroyDragEndSub?: Subscription;
isDestroyed?: boolean;
private delayRemoveOriginPlaceholderTimer?;
batchDraggable: undefined | any;
private dragOriginPlaceholder?;
private dragOriginPlaceholderNextSibling?;
dragElShowHideEvent: Subject<boolean>;
beforeDragStartEvent: Subject<boolean>;
el: {
nativeElement: any;
};
dragDropService: DragDropService;
dragPreviewDirective?: DragPreviewDirective;
constructor(el: HTMLElement, dragDropService: DragDropService, dragPreviewDirective?: DragPreviewDirective);
ngOnInit(): void;
dropSubscription(): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
dragStart(e: DragEvent): void;
dragEnd(e: DragEvent): void;
mouseover(e: MouseEvent): void;
private allowDrag;
private applyDragHandleClass;
private getDragHandleElement;
private mousePosition;
insertOriginPlaceholder: (directShow?: boolean, updateService?: boolean) => void;
removeOriginPlaceholder: (updateService?: boolean) => void;
delayRemoveOriginPlaceholder: (updateService?: boolean) => void;
findNextSibling(currentNextSibling: Element): Element;
private checkAndGetViewPointChange;
}
declare const _default: {
mounted(el: HTMLElement & {
[props: string]: any;
}, binding: DirectiveBinding<IDraggableBinding & IDraggableListener>, vNode: VNode): void;
updated(el: HTMLElement & {
[props: string]: any;
}, binding: DirectiveBinding<IDraggableBinding & IDraggableListener>): void;
beforeUnmount(el: HTMLElement & {
[props: string]: any;
}): void;
};
export default _default;