Socket
Socket
Sign inDemoInstall

react-scroll-wheel-handler

Package Overview
Dependencies
0
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-scroll-wheel-handler

Simple react component for handling scroll trackpad, arrow keys, swipe gestures and mouse wheel event.


Version published
Weekly downloads
3.9K
decreased by-13.93%
Maintainers
1
Install size
17.4 kB
Created
Weekly downloads
 

Readme

Source

React Scroll Wheel Handler

npm version

NPM

Simple react component for handling scroll trackpad, arrow keys, swipe gestures and mouse wheel event.

Demo

Live Demo

#Update

  • 2.0.0:

add prop disableSwipe.

removed customStyle from props.

Replace CustomContainerComponent with CustomComponent. It must have ref passed as a prop. Example:

const CustomComponent = forwardRef(({ children, ...props }, ref) => (
  <div ref={ref} {...props} id="custom">
    {children}
  </div>
));
  • 1.0.0: change function to check when mouse/trackpad value increase (fix windows scroll)

Usage

  1. Install the npm package:
    npm install --save react-scroll-wheel-handler
    or
    yarn add react-scroll-wheel-handler
  1. Import it:
import ReactScrollWheelHandler from "react-scroll-wheel-handler";
  1. Config the component:
<ReactScrollWheelHandler
  upHandler={(e) => console.log("scroll up")}
  downHandler={(e) => console.log("scroll down")}
>
  ...
</ReactScrollWheelHandler>

#Props

  • upHandler: Function that is triggered on scroll up
  • downHandler: Function that is triggered on scroll down
  • leftHandler: Function that is triggered on scroll left
  • rightHandler: Function that is triggered on scroll right
  • CustomComponent: Component with forwardRef. It will be rendered in place of the container div.
  • pauseListeners: Boolean. isRequired. Default: false. With this props you can block all events from be fired
  • timeout: Integer. isRequired. Default: 600. Timeout between scroll.
  • disableKeyboard: Boolean. Default: false.
  • disableSwipe: Boolean. Default: false.
  • disableSwipeWithMouse: Boolean. Default: false.
  • preventScroll: Boolean. isRequired. Prevent scroll, if you want to implement your own scrolling. Default: false.
  • wheelConfig: Array. Default: []. Set config for Lethargy lib. Example: [7, 100, 0.05]. stability, sensitivity, tolerance.

All the other props are passed to the div/component returned.

Example

import React, { Component } from "react";
import ReactScrollWheelHandler from " react-scroll-wheel-handler";

class App extends React.Component {
  state = {
    currentIndex: 0,
    colors: ["red", "black", "grey", "blue", "green"],
  };
  nextIndex = () => {
    const { colors, currentIndex } = this.state;
    if (currentIndex == colors.length - 1) {
      return this.setState({ currentIndex: 0 });
    }

    return this.setState({
      currentIndex: currentIndex + 1,
    });
  };

  prevIndex = () => {
    const { colors, currentIndex } = this.state;
    if (currentIndex == 0) {
      return this.setState({
        currentIndex: colors.length - 1,
      });
    }

    return this.setState({
      currentIndex: currentIndex - 1,
    });
  };

  render() {
    const { colors, currentIndex } = this.state;
    return (
      <div>
        <ReactScrollWheelHandler
          upHandler={this.prevIndex}
          downHandler={this.nextIndex}
          style={{
            width: "100%",
            height: "100vh",
            backgroundColor: colors[currentIndex],
            transition: "background-color .4s ease-out",
          }}
        >
          <h1>SCROLL FOR CHANGE BACKGROUND COLOR</h1>
        </ReactScrollWheelHandler>
      </div>
    );
  }
}

FAQs

Last updated on 25 May 2022

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