npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

quovadis

v1.7.0

Published

A small library to handle changes in scroll direction.

Downloads

43

Readme

Quovadis

Quovadis is a lightweight JavaScript library to facilitate dealing with changes in scroll-direction. It is based on the scroll-intent plugin by pwfisher with some key differences:

  • no jQuery dependency 🙅‍♂️
  • offers automatic orientation detection 🔮
  • allows setting of a custom scroll target element 🎯
  • allows targetting horizontal scroll ↔️
  • sets classes on the html element instead of data-attributes ✌️
  • dispatches scrollDirectionChange event when scroll-direction changes 🚨

Have any suggestions or feedback? Reach out!

Installation

Install via npm

npm install quovadis

Download and include via script tag

<script src="quovadis.min.js"></script>

or

Using import statement

import Quovadis from "quovadis";

Usage

JS

Initialize Quovadis by creating a new Quovadis instance.

var q = new Quovadis();
q.attach();

Quovadis accepts a list of options. Passing no options (as in the example above) defaults to:

var q = new Quovadis({
  context: document.documentElement,
  horizontal: false,
  event: true,
  historyLength: 32,
  historyMaxAge: 512,
  thresholdPixels: 64,
});

Output

By default, Quovadis will automatically add and remove classes on the html element based on scroll direction, i.e. scrolling-down and scrolling-up or scrolling-right and scrolling-left when working in horizontal mode.

Event

Unless set to do otherwise, Quovadis will also dispatch a scrollDirectionChange event to the window element. This event can be used to set up your own callback functions to fire once scroll direction changes.

window.addEventListener("scrollDirectionChange", function (e) {
  switch (e.detail.direction) {
    case "up":
      /* stuff to do when scrolling up */
      break;
    case "down":
      /* stuff to do when scrolling down */
      break;
    case "left":
      /* stuff to do when scrolling left */
      break;
    case "right":
      /* stuff to do when scrolling right */
      break;
  }
});

Options

| Property | Type | Description | Default | | ----------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------- | | context | Element | Sets the element to listen to scroll events on. | window | | horizontal | Boolean/String | Set this to true to explicitly target horizontal scrolling. In auto mode, Quovadis will try to figure out the orientation on its own. | 'auto' | | event | Boolean | Determines whether Quovadis should fire a scrollDirectionChange event when scroll direction changes. | true | | debug | Boolean | Enables debug mode which will output information about the currently active Quovadis instance to the console. | false | | historyLength | Number | The number of records to keep to determine the scroll direction. | 32 | | historyMaxAge | Number | The maximum duration for a record to determine the scroll direction. | 512 | | thresholdPixels | Number | The number of pixels to scroll before re-evaluating the direction | 64 |

Methods

| Method | Description | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | attach() | Initializes the Quovadis instance. This is also the function that returns the EventListener for the scroll context. | | detach() | Removes the EventListener from the Quovadis instance. | | reattach(el) | Attaches the Quovadis EventListener to a new scroll context. This is useful when working with dynamic AJAX content. Accepts an element parameter. |

License

This project is licensed under the MIT License.