1 Star 1 Fork 0

mfuu/vue3-virtual-sortable

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

vue-virtual-sortable

npm npm vue2 Software License

A virtual scrolling list component that can be sorted by dragging, support vue3

If you use vue with 2.x, see here

Live demo

Simple usage

npm i vue-virtual-sortable@next

Root component:

<template>
  <div>
    <!--
      :handle="'i'" // use tagName 
      :handle="'.handle'" // use class
      :handle="'#handle'" // use id
    -->
    <VirtualList v-model="list" :dataKey="'id'" :handle="'#handle'" style="height: 500px;">
      <template v-slot:item="{ record, index, dataKey }">
        <div>
          <i id="handle" class="handle">handle</i>
          <p>{{ record.text }}</p>
        </div>
      </template>
      <template v-slot:header>
        <div class="header">header</div>
      </template>
      <template v-slot:footer>
        <div class="footer">footer</div>
      </template>
    </VirtualList>
  </div>
</template>

<script setup lang="ts">
import VirtualList from 'vue-virtual-sortable';

const list = ref([
  { id: '1', text: 'abc' },
  { id: '2', text: 'def' },
]);
// const items = computed({
//   get() {
//     return list.value;
//   },
//   set(val) {
//     // trigger when drag state changed if you use with `v-model`
//     list.value = val;
//     console.log(val);
//   }
// })
</script>

Emits

Emit Description
top Scrolled to top of scroll element
bottom Scrolled to bottom of scroll element
drag Element dragging started
drop Element dragging is completed
rangeChange List rendering range changed

Props

Required props

Prop Type Description
data-key String The unique identifier of each piece of data, in the form of 'a.b.c'
v-model Array|Ref<Array> The data that needs to be rendered

Optional props

Commonly used

Prop Type Default Description
keeps Number 30 The number of lines rendered by the virtual scroll
size Number - The estimated height of each piece of data, you can choose to pass it or not, it will be automatically calculated
handle Function/String - Drag handle selector within list items
group Object/String - ' ' | { name: 'group', put: true|false, pull: true|false|'clone', revertDrag: true|false }
direction vertical | horizontal vertical Scroll direction
scroller Document | HTMLElement - Virtual list scrolling element
lockAxis x | y - Axis on which dragging will be locked
tableMode Boolean false Display with table and tbody
keepOffset Boolean false When scrolling up to load data, keep the same offset as the previous scroll
debounceTime Number 0 Scroll debounce time
throttleTime Number 0 Scroll throttle time

Uncommonly used

Prop Type Default Description
sortable Boolean true Whether the current list can be sorted by dragging
draggable String [role="item"] Specifies which items inside the element should be draggable.
disabled Boolean false Disables the sortable if set to true
animation Number 150 Animation speed moving items when sorting
autoScroll Boolean true Automatic scrolling when moving to the edge of the container
scrollSpeed Object { x: 10, y: 10 } Vertical&Horizontal scrolling speed (px)
scrollThreshold Number 55 Threshold to trigger autoscroll
delay Number 0 Time in milliseconds to define when the sorting should start
delayOnTouchOnly Boolean false Only delay on press if user is using touch
fallbackOnBody Boolean false Appends the ghost element into the document's body
rootTag String div Label type for root element
wrapTag String div Label type for list wrap element
wrapClass String '' List wrapper element class
wrapStyle Object {} List wrapper element style
ghostClass String '' The class of the mask element when dragging
ghostStyle Object {} The style of the mask element when dragging
chosenClass String '' Class name for the chosen item
placeholderClass String '' Class name for the drop placeholder

Methods

Method Description
getSize(key) Get the size of the current item by unique key value
getOffset() Get the current scroll height
getClientSize() Get wrapper element client viewport size (width or height)
getScrollSize() Get all scroll size (scrollHeight or scrollWidth)
scrollToTop() Scroll to top of list
scrollToBottom() Scroll to bottom of list
scrollToKey(key) Scroll to the specified data-key position
scrollToIndex(index) Scroll to the specified index position
scrollToOffset(offset) Scroll to the specified offset
MIT License Copyright (c) 2022 mfuu Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

A virtual scrolling list component that can be sorted by dragging, support vue3 展开 收起
TypeScript 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
TypeScript
1
https://gitee.com/mfuu/vue3-virtual-sortable.git
git@gitee.com:mfuu/vue3-virtual-sortable.git
mfuu
vue3-virtual-sortable
vue3-virtual-sortable
master

搜索帮助