UNPKG

@shopware-ag/meteor-component-library

Version:

The meteor component library is a Vue component library developed by Shopware. It is based on the [Meteor Design System](https://shopware.design/).

52 lines (51 loc) 2.17 kB
import { Directive } from 'vue'; export interface DragConfig<DATA = unknown> { delay: number; dragGroup: number | string; draggableCls: string; draggingStateCls: string; dragElementCls: string; validDragCls: string; invalidDragCls: string; preventEvent: boolean; validateDrop: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => boolean); validateDrag: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => boolean); validateDragStart: null | ((dragConfigData: DragConfig<DATA>["data"], el: HTMLElement, event: MouseEvent | TouchEvent) => boolean); onDragStart: null | ((dragConfig: DragConfig<DATA>, el: HTMLElement, dragElement: HTMLElement) => void); onDragEnter: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"], valid: boolean) => void); onDragLeave: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => void); onDrop: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => void); data: null | DATA; disabled: boolean; } export interface DropConfig<DATA = unknown> { dragGroup: number | string; droppableCls: string; validDropCls: string; invalidDropCls: string; validateDrop: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => boolean); onDrop: null | ((dragConfigData: DragConfig<DATA>["data"], dropConfigData: DropConfig<DATA>["data"]) => void); data: null | DATA; } export interface DropZone { el: HTMLElement; dropConfig: DropConfig; } /** * Directive for making elements draggable. * * Usage: * <div v-draggable="{ data: {...}, onDrop() {...} }"></div> * * See the {DragConfig} for all possible config options. */ export declare const draggable: Directive; /** * Directive to define an element as a drop zone. * * Usage: * <div v-droppable="{ data: {...}, onDrop() {...} }"></div> * * See the {dropConfig} for all possible config options. */ export declare const droppable: Directive;