index.vue 816 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. <template>
  2. <draggable
  3. v-bind="$attrs"
  4. v-on="$listeners"
  5. v-model="innerValue"
  6. animation="250"
  7. forceFallback="true"
  8. >
  9. <transition-group>
  10. <slot></slot>
  11. </transition-group>
  12. </draggable>
  13. </template>
  14. <script>
  15. import draggable from "vuedraggable";
  16. export default {
  17. name: "Draggable",
  18. props: {
  19. // v-model
  20. value: {
  21. type: [Array],
  22. require: true,
  23. },
  24. group: {
  25. type: [String, Object],
  26. require: true,
  27. },
  28. },
  29. components: { draggable },
  30. data() {
  31. return {};
  32. },
  33. computed: {
  34. innerValue: {
  35. get() {
  36. return this.value;
  37. },
  38. set(value) {
  39. this.$emit("input", value);
  40. },
  41. },
  42. },
  43. watch: {},
  44. methods: {},
  45. created() {},
  46. mounted() {},
  47. destroyed() {},
  48. };
  49. </script>
  50. <style scoped></style>