Skip to content

Group

1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<template>
  <div class="group-wrap">
    <div ref="groupRef0" class="group-item">
      <div v-for="item in 10" :key="item" class="item">
        {{ item }}
      </div>
    </div>
    <div ref="groupRef1" class="group-item">
      <div v-for="item in 10" :key="item" class="item pink">
        {{ item }}
      </div>
    </div>
    <div ref="groupRef2" class="group-item">
      <div v-for="item in 10" :key="item" class="item pink">
        {{ item + 10 }}
      </div>
    </div>
    <div ref="groupRef3" class="group-item">
      <div v-for="item in 10" :key="item" class="item green">
        {{ item }}
      </div>
    </div>
    <div ref="groupRef4" class="group-item">
      <div v-for="item in 10" :key="item" class="item green">
        {{ item + 10 }}
      </div>
    </div>
  </div>
</template>

<script setup>
import { onMounted, onUnmounted, ref } from 'vue';

const dnd0 = ref();
const dnd1 = ref();
const dnd2 = ref();
const dnd3 = ref();
const dnd4 = ref();
const groupRef0 = ref();
const groupRef1 = ref();
const groupRef2 = ref();
const groupRef3 = ref();
const groupRef4 = ref();

onMounted(() => {
  import('../../src/index').then((module) => {
    const Sortable = module.default;
    dnd0.value = new Sortable(groupRef0.value, {
      group: {
        name: 'group',
        pull: 'clone',
        revertDrag: true,
      },
      chosenClass: 'chosen',
    });

    dnd1.value = new Sortable(groupRef1.value, {
      group: {
        name: 'group1',
        put: ['group', 'group2'],
      },
      chosenClass: 'chosen',
    });

    dnd2.value = new Sortable(groupRef2.value, {
      group: {
        name: 'group2',
        put: ['group', 'group1'],
      },
      chosenClass: 'chosen',
    });

    dnd3.value = new Sortable(groupRef3.value, {
      group: {
        name: 'group3',
        put: ['group', 'group4'],
      },
      chosenClass: 'chosen',
    });

    dnd4.value = new Sortable(groupRef4.value, {
      group: {
        name: 'group4',
        put: ['group', 'group3'],
      },
      chosenClass: 'chosen',
    });
  })
});

onUnmounted(() => {
  dnd0.value.destroy();
  dnd1.value.destroy();
  dnd2.value.destroy();
  dnd3.value.destroy();
  dnd4.value.destroy();
});
</script>

<style scoped>
.group-wrap {
  display: flex;
  justify-content: space-between;
  gap: 20px;
}

.group-item {
  flex: 1;
}

.item {
  border-radius: 5px;
  box-shadow: 0px 2px 5px -2px #57bbb4;
  padding: 8px;
  margin-bottom: 5px;
}

.item.pink {
  background-color: #fb566940;
}

.item.green {
  background-color: turquoise;
}

.chosen {
  box-shadow: 0px 0px 5px 1px #1984ff;
}
</style>

Released under the MIT License.