Alfred-Skyblue / vue-draggable-plus

Universal Drag-and-Drop Component Supporting both Vue 3 and Vue 2
https://vue-draggable-plus.pages.dev/en/
MIT License
2.74k stars 105 forks source link

`change` event triggers different from `docs` #25

Closed jongmin4943 closed 1 year ago

jongmin4943 commented 1 year ago

docs for change event says Triggered when an item is dragged and changes position. However, change event triggers when dragging without change actual position like move event. As far as I remember correctly, change event triggers when an item is dropped to different position.

<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>

image

jongmin4943 commented 1 year ago

sorry, it was my misunderstanding.