Socket
Socket
Sign inDemoInstall

tiny-virtual-list

Package Overview
Dependencies
0
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    tiny-virtual-list

JS library for virtual list


Version published
Maintainers
1
Install size
30.1 kB
Created

Readme

Source

tiny-virtual-list

npm npm Software License

A JS library for virtual list

Live Demo

Usage

Install

npm i tiny-virtual-list

HTML

<div class="scroller">
  <ul class="container">
    <!-- default rendered items -->
    <li>1</li>
    <li>2</li>
    <li>3</li>
  </ul>
</div>

JavaScript

import Virtual from 'tiny-virtual-list';

const container = document.getElementById('container');
const scroller = document.getElementById('scroller');

new Virtual(container, {
  count: 100,
  scroller: scroller,

  onUpdate: ({ start, end, total, front, behind }) => {
    container.innerHTML = '';

    for(let i = start; i <= end; i++) {
      const item = document.createElement('li');
      item.innerHTML = `${i}`;
      container.append(item);
    }
    container.style.padding = `${front}px 0px ${behind}px`;
  }
})

Options

new Virtual(element, {
  size: 0, // estimated size
  count: 0, // Total number of list items
  buffer: 1, // Render range buffer.
  scroller: HTMLElement | window | document, // Virtual list scrolling element
  direction: 'vertical', // `vertical/horizontal`, scroll direction
  debounceTime: 0, // debounce time on scroll
  throttleTime: 0, // throttle time on scroll

  onUpdate: (range) => {
    // rendering params changed
  },
  onScroll: ({ offset, top, bottom, direction }) => {
    if (top === true) {
      // scrolled to the top of list
    }
    if (bottom === true) {
      // scrolled to the bottom of list
    }
  },
})

Methods

let virtual = new Virtual();
// Removes the virtual functionality completely
virtual.destroy();

// Get or set the option value, depending on whether the `value` is passed in
virtual.option(key, value?);

// Update sizes
virtual.refresh();

// Recalculate the range
virtual.updateRange(start?);

// Listen to the scrolling events of the scroller
virtual.addScrollEventListener();

// Remove the scroll listener of the scroller
virtual.removeScrollEventListener();

// Git item size by index
virtual.getSize(index: Number);

// Get the current scroll offset (scrollLeft / scrollTop)
virtual.getOffset();

// Get the scroll element's size (offsetWidth / offsetHeight)
virtual.getClientSize();

// Get the current scroll size (scrollWidth / scrollHeight)
virtual.getScrollSize();

// Scroll to bottom of list
virtual.scrollToBottom();

// Scroll to the specified index position
virtual.scrollToIndex(index: Number);

// Scroll to the specified offset
virtual.scrollToOffset(offset: Number);

Utils

Virtual.utils.debounce(fn: Function, wait: Number);
Virtual.utils.throttle(fn: Function, wait: Number);

Keywords

FAQs

Last updated on 07 May 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc