@dragndrop/vue-draggable
v0.0.4
Published
Draggable component for VueJS
Downloads
22
Maintainers
Readme
Draggable
Draggable component for VueJS 2+ which implements @dragndrop/draggable component.
Design & API Documentation
Installation
npm install @dragndrop/vue-draggable
Usage
Draggable element can be used for different functionalities - from moving elements around to make sortable list or draggable grid elements.
Typescript support
Component has its declarations (*.d.ts) for Typescript available.
Registration
import {VueDraggable} from '@dragndrop/vue-draggable';
Vue.component('VueDraggable', VueDraggable);
Registration as plugin
import Vue from 'vue';
import VueDraggable from '@dragndrop/vue-draggable';
Vue.use(VueDraggable);
Simple example
<template>
<VueDraggable
:data="dataTransfer"
:avatar="avatar"
@onDrag="onDrag"
>
<div>Example element</div>
</VueDraggable>
</template>
<script>
export default {
data() {
return {
dataTransfer: 'example data',
avatar: new Avatar.clone(),
}
},
methods: {
onDrag(event) {
console.log(event.dragInfo.data); // 'example data'
}
}
}
</script>
CSS Classes (they can be changed)
CSS Class | Description
--- | ---
draggable--dragging
| Sets this class to element when dragging
draggable--occurring
| Sets this class to body element when dragging
Shadow DOM
If you want to use dragndrop in Shadow DOM you need to add draggable--retarget
attribute to your host element so events will be bubble through Shoadow DOM and recursive elementFromPoint()
calls will work correctly.
Events
Events | Type | Data | Description
--- | --- | --- | ---
onDragStart
| CustomEvent | {originalEvent, dragInfo, dropzoneElement} | Event dispatched when dragging starts
onDrag
| CustomEvent | {originalEvent, dragInfo, dropzoneElement} | Event dispatched when dragging
onDragEnd
| CustomEvent | {originalEvent, dragInfo, dropzoneElement} | Event dispatched when dragging ends
DragInfo
DragInfo | Type | Description
--- | --- | ---
draggableId
| Number | Id of draggable element
element
| Element | Draggable element
data
| Type Generic | Data attached to draggable with data property
startPosition
| Point | Start position
avatar
| Avatar | Avatar attached to draggable with avatar property
axis
| Axis | Axis which dragging is handled 'horizontal', 'vertical' and 'both'
position
| Point | Current position of cursor
shift
| Point | Distance from start position to elements top-left corner
Props
Property | Value Type | Description
--- | --- | ---
data
| Generic Type | Data which is attached to draggable
draggable
| Boolean | Turn on / off draggable functionality
avatar
| Avatar | Element which is rendered when element is dragging
axis
| Axis ('both', 'horizontal', 'vertical') | Axis the dragging is available for
handle
| String | Selector on which dragging is available (children of element are included)
cancel
| String | Selectors on which draggins is not available (children of element are included)
draggingClass
| String | Class which is set on element when dragging (draggable--dragging
default)
draggingClassBody
| String | Class which is set on body element when dragging (draggable--occurring
default)
minDragStartDistance
| number | Min distance to start dragStart state (4
default)
touchAction
| String or null | Makes touch-action
property set on element when drag is started (undefined
default)
customScroll
| ((startPosition: Point, currentPosition: Point) => void) or boolean | Allows to specify customScroll behavior with function or when set with false
prevents from custom scroll which is set by default
Methods
Method Signature | Description
--- | ---
abort() => void
| Aborts current dragging
destroy() => void
| Clean up method. Is used on beforeDestroy hook.