<template>
<draggable
v-model="list"
:tag="tag"
:group="group"
:move="move"
:fallback-tolerance="3"
:force-fallback="true"
:fallback-on-body="true"
:disabled="disabled"
@start="onStart"
@end="onEnd"
@change="onChange"
@update="onUpdated"
@move="onMove"
@dragover.prevent
>
<slot></slot>
</draggable>
</template>
<script setup lang="ts">
const props = withDefaults(
defineProps<{
group: string;
list?: Array<any>;
tag?: string;
option?: any;
move?: (event: any, originEvent: any) => void;
disabled?: boolean;
}>(),
{
list: () => [],
tag: "div",
option: undefined,
move: undefined,
disabled: false,
}
);
const { list } = toRefs(props);
const emits = defineEmits<{
(e: "start", value: any): void;
(e: "end", value: any): void;
(e: "change", value: any): void;
}>();
const onStart = (event: any) => {
emits("start", event);
console.log("start : ", event);
};
const onEnd = (event: any) => {
emits("end", event);
console.log("end : ", event);
};
const onChange = (event: any) => {
console.log("onChange event : ", event);
emits("change", event);
};
const onUpdated = (event: any) => {
console.log("onUpdated event : ", event);
// emits("change", event);
};
const onMove = (event: any, b: any, c: any) => {
console.log("onMove event : ", event, b, c);
// emits("change", event);
};
</script>