vue-typed-virtual-list

A small, efficient, easy-to-use virtual list for Vue 3
45,873 39
Install
npm install vue-typed-virtual-list
Latest Version:1.0.10
Vue:3
License:Apache-2.0
Last Updated:Oct 18, 2023
Links: GitHub  ·  npm
Maintainer: bsssshhhhhhh

vue-typed-virtual-list

npm size vue3 Typescript

A fast, type-safe virtual list component for Vue 3.

Features:

  • Extremely efficient calculations
  • Provides generic type safety inside the #item slot
  • Automatically and transparently deals with variable element heights
  • Small footprint. <2KB gzipped

Live Demo · Try it on CodeSandbox

Usage

Example:

<template>
  <div>
    <VirtualScroller
      :default-size="40"
      :items="someArrayOfUsers"
    >
      <template #item="{ ref, offset, index }">
        <!-- `ref` is the array item. Thanks to Volar, `ref` has the type `User` here -->

        {{ ref.name }}
      </template>
    </VirtualScroller>
  </div>
</template>

<script lang="ts">
import { defineComponent } from 'vue';
import { createVirtualScroller } from 'vue-typed-virtual-list';

type User = {
  id: number;
  name: string;
  phone: string;
};

export default defineComponent({
  components: {
    // pass the item type as a type parameter to enable type safety in the item slot
    VirtualScroller: createVirtualScroller<User>()
  },
  data: () => ({
    someArrayOfUsers: Array
      .from(Array(100))
      .map((_, i) => ({
        id: i + 1,
        name: 'Name',
        phone: 'Phone'
      }))
  })
})
</script>

or, with <script setup>:

<script setup lang="ts">
import { createVirtualScroller } from 'vue-typed-virtual-list';

const VirtualScroller = createVirtualScroller<User>();

type User = {
  id: number;
  name: string;
  phone: string;
};

const someArrayOfUsers: User[] = Array
  .from(Array(100))
  .map((_, i) => ({
    id: i + 1,
    name: 'Name',
    phone: 'Phone'
  }));

</script>

Props

  • defaultSize - Placeholder size to use in calculations before an item's actual height has been measured
  • items - Array of items to render
  • padding - Number of items beyond what is visible in the overflow viewport to render. (Default: 10)

Emits

  • visibleItemsChanged - Fired when the start/end indices have changed
    • argument type: { start: number; end: number }

Exposed Instance Methods

  • scrollTo(index: number): void - scrolls an index into view

Development

yarn
yarn dev

Contributing

PRs welcome

Related Packages

vue-virtual-list-v3

vue3 version virtual list, refer to vue-virtual-scroll-list.

2,841 22
lang-virtual-list-vue

lang-virtual-list-vue

600 7
@v-c/virtual-list

Vue Virtual List Component

55,037 32
@lhlyu/vue-virtual-waterfall

vue3 virtual waterfall component

21,403 247
@virt-list/vue2

Vue 2 virtual list, grid and tree components

1,563 12

Version History

Version Released License
1.0.10 Apache-2.0
1.0.9 Apache-2.0
1.0.8 Apache-2.0
1.0.7 Apache-2.0
1.0.6 Apache-2.0