Skip to content

拖拽排序组件 - IkDragList

ikDrag_list.png

props

vue
<script lang="ts">
  export interface TList {
    label: String
    order?: number
    [key: string]: any
  }
</script>
props类型说明默认值
listArray as PropType< Array< TList>>需要排序的数据[]
groupString如果一个页面有多个拖拽区域,通过设置group名称可以实现多个区域之间相互拖拽;或者 { name: "...", pull: [true, false, 'clone', array , function], put: [true, false, array , function] }'draggable'
sortBoolean是否开启排序,如果设置为false,它所在组无法排序true
showIconBoolean前置图标true
delayNumber鼠标按下多少秒之后可以拖拽元素0
touchStartThresholdNumber鼠标按下移动多少px才能拖动元素0
disabledBoolean是否禁用用拖拽组件false
animationNumber拖动时的动画效果,如设置animation=1000表示1秒过渡动画效果200
handleString只有当鼠标在class为mover类的元素上才能触发拖到事件'.mover'
filterString设置了unmover样式的元素不允许拖动'.unmover'
draggableString样式类为item的元素才能被拖动'.item'
ghostClassString设置拖动元素的占位符类名,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true'ghost'
chosenClassString被选中目标的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true'chosen'
dragClassString拖动元素的样式,你的自定义样式可能需要加!important才能生效,并把forceFallback属性设置成true'drag'
forceFallbackBoolean默认false,忽略HTML5的拖拽行为,因为h5里有个属性也是可以拖动,你要自定义ghostClass chosenClass dragClass样式时,建议forceFallback设置为truefalse
fallbackClassString默认false,克隆选中元素的样式到跟随鼠标的样式'fallback'
fallbackOnBodyBoolean默认false,克隆的元素添加到文档的body中false
fallbackToleranceNumber按下鼠标移动多少个像素才能拖动元素,:fallback-tolerance="8"8
scrollBoolean有滚动区域是否允许拖拽 默认truetrue
scrollFnFunction滚动回调函数() => { }
scrollFensitivityNumber距离滚动区域多远时,滚动滚动条30
scrollSpeedNumber滚动速度30
itemClassString数据项样式类''
groupClassString拖拽组件样式类''
itemStyleObject单个数据项的边框圆角弧度值、距离底部的值、背景颜色值{ radius: { type: Number, default: 30 }, bottom: { type: Number, default: 8 }, background: { type: String, default: 'var(--ik-sub-sidebar-menu-bg)'}}

事件

名称说明类型
change拖拽排序结束后触发(val: Array<TList>, item: any) => void

示例代码

vue
<template>
  <!-- 示例 -->
  <IkDragList 
    :list="sortList" 
    :item-style="{ bottom: 4 }" 
    @change="handSortChange" />
</template>