enn-draggable-list-vue3
拖拽列表组件 for Vue3
借助 vuedraggable 组件实现
https://www.npmjs.com/package/vuedraggable/v/4.1.0
示例
DraggableList 拖拽排序组件
<template>
<DraggableList :list="list" :selectable="true">
<template #item="{ item }">
<DraggableListItem
:item="item"
@select="onSelect(item)"
@delete="onDelete(item)"
>
{{ item }}
</DraggableListItem>
</template>
</DraggableList>
</template>
<script>
import { DraggableList, DraggableListItem } from '../index';
export default {
components: {
DraggableList,
DraggableListItem,
},
data() {
return {
list: [
{
id: 1,
name: 1,
},
{
id: 2,
name: 2,
},
{
id: 3,
name: 3,
},
{
id: 4,
name: 4,
},
],
};
},
methods: {
onSelect(item) {
console.log('onSelect', item);
},
onDelete(item) {
this.$confirm('确认删除?', null, {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'error',
})
.then(() => {
this.list = this.list.filter((field) => field.id !== item.id);
this.$message({
type: 'success',
message: '已删除',
});
})
.catch(() => {});
},
},
};
</script>
<style>
</style>
DraggableTransfer 拖拽穿梭组件
<template>
<DraggableTransfer :source="list" v-model="data" />
</template>
<script>
import { DraggableTransfer } from 'enn-draggable-list';
export default {
components: {
DraggableTransfer,
},
data() {
return {
list: [
{
id: 1,
name: 1,
},
{
id: 2,
name: 2,
},
{
id: 3,
name: 3,
},
{
id: 4,
name: 4,
},
],
data: [],
};
},
};
</script>
<style>
</style>
API
DraggableList Attributes
参数 | 类型 | 必填 | 默认值 | 说明 |
---|
list | Array | true | | 拖拽列表的数据 |
itemKey | String | | | 遍历列表项 key 的数据源 |
selectable | Boolean | | false | 是否开启拖拽触发 select 事件 |
sortable | Boolean | | true | 是否可排序 |
handle | String | | .draggable-list-item .drag-handle | 可拖拽的元素 |
options | Object | | { animation: 200, disabled: false, } | 拖拽相关设置 |
group | Object\String | | 拖拽组设置 | { put: false, push: false, } |
clone | Function | | | 当 clone 选项为 true 时,在源组件上调用函数以克隆元素 |
listTag | String | | | 可拖动组件作为包含槽的外部元素创建的元素的 HTML 节点类型 |
listData | Object | | | 将附加信息传递给 listTag 声明的子组件 |
itemTag | String | | | 子组件外部元素创建的元素的 HTML 节点类型 |
itemData | Object\Function | | | 将附加信息传递给 itemTag 声明的子组件型 |
Tips
DraggableList Event
事件名称 | 说明 | 回调参数 |
---|
add | 拖拽添加事件 | - |
select | 拖拽选中事件 | - |
DraggableList Slot
DraggableListItem Attributes
参数 | 类型 | 必填 | 默认值 | 说明 |
---|
item | Object | true | | 子项的数据 |
hasControl | Boolean | | | 是否有控制按钮(拖拽、删除) |
active | Boolean | | | 是否激活,true 时 class 加上 active |
DraggableListItem Event
事件名称 | 说明 | 回调参数 |
---|
select | 选中事件 | - |
delete | 删除事件 | - |
DraggableTransfer Attributes
参数 | 类型 | 必填 | 默认值 | 说明 |
---|
source | Array | 是 | | 左侧拖拽列表的数据 |
data | Array | 是 | | 右侧拖拽列表的数据,使用 v-model 传入 |
sourceTitle | String | | | |
resultTitle | String | | | |
isClone | Boolean | | true | 数据移动的类型 clone / move |
DraggableTransfer Slot
名称 | 说明 | 参数 |
---|
item | 拖拽项的内容 | {item} |
sourceItem | 左侧数据列表拖拽项的内容 | {item} |
resultItem | 右侧结果列表拖拽项的内容 | {item} |
Tips
- item slot 的优先级比 sourceItem、resultItem 高
本地调试组件
发包