vue-perfect-list
v0.1.0
Published
  
Maintainers
Readme
vue-perfect-list
Installation
npm install vue-perfect-list
// or
yarn add vue-perfect-listImport with CommonJS
import Vue from 'vue'
import VuePerfectList from 'vue-perfect-list'
Vue.use(VuePerfectList)Import on Browser
<script src="vue.js"></script>
<script src="vue-perfect-list/dist/vue-perfect-list.umd.min.js"></script>Usage
<template>
<VuePerfectList
:data="list"
:virtualScrollerOption="{
defaultItemSize: 30,
remainCount: 15,
}"
:scrollTrackerOption="{
debounceEventWait: 100,
}"
@reachTop="handleScrollReachTop"
@reachBottom="handleScrollReachBottom">
<template v-slot="{ data, index, updateSize }">
<Item
:key="index"
:data="data"
@update-size="updateSize">
</Item>
</template>
</VuePerfectList>
</template>
<script>
export default {
data() {
return {
list: [],
};
},
methods: {
handleScrollReachTop() {
console.log('reach on top');
},
handleScrollReachBottom() {
console.log('reach on bottom');
},
},
}
</script>Component: VuePerfectList
Props
data:any[]virtualScrollerOption:?objectdefaultItemSize:numberremainCount:?numberthrottleWait:?number
scrollTrackerOption:?objectthrottleWait:?number
Events
reachTop:(): voidreachBottom:(): void;
ScopSlotProps
index:numberdata:anyupdateSize:(dom?: HTMLElement): void
Methods
scrollToTop:(): Promise<void>scrollToBottom:(): Promise<void>
Class: Viewport
new Viewport(el, scroll, vertical)
el:DOMElementscroll:?DOMElementvertical:?boolean
Members
scrollTop:numberscrollLeft:numberclientHeight:numberclientWidth:numberscrollHeight:numberscrollWidth:number
Class: ScrollTracker
new ScrollTracker(option)
option:objectdebounceEventWait:?number
Methods
mount:(viewport: Viewport): voidunmount:(): voidaddEventListener:(event: string, handler): voidremoveEventListener:(event: string, handler: ): void
Events
reachTop, reachBottom, reachRight, reachLeft
Class: VirtualScroller
new VirtualScroller(data, option)
data:any[]option:objectdefaultItemSize:numberremainCount:?numberthrottleWait:?number
Members
state:objectbeforeBlankSize:nubmerafterBlankSize:nubmerdata:Item[]index:numbervalue:any
Methods
mount:(viewport: Viewport): voidunmount:(): voidupdateData:(data: any[]): voidupdateItemSize:(item: any, size: number): voidscrollToTop:(): Promise<void>scrollToBottom:(): Promise<void>
Run demo project
yarn dev