• This repository has been archived on 01/Sep/2023
  • Stars
    star
    170
  • Rank 223,357 (Top 5 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created almost 5 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A slider component for react

react-spring-slider

Build a flexibale slider with smooth animations.

react-spring-slider uses react-spring under the hood. This project aims to be flexible through configuration as well as be easy to use by sane and reasonable defaults.

You can have a real life look how this can be used within storybook (source) at: farbenmeer.github.io/react-spring-slider.

Version Minified Size Minified Zipped Size License npm downloads

Installation

yarn add @farbenmeer/react-spring-slider
// OR
npm install --save @farbenmeer/react-spring-slider

Usage

The module provides a default export which you can import and use in your own component.

import Slider from "@farbenmeer/react-spring-slider";

const App = () => {
  return (
    <Slider>
      <div>child 1</div>
      <div>child 2</div>
      <div>child 3</div>
    </Slider>
  );
};

The slider can gain any children as long as there are a react node, so you can show images, text or some more complex components.

You can also use Typescript as the package contains type definitions.

Configuration

The slider currently provides the following interface:

Name Type Default Description
activeIndex number 0 Controlles the shown index
ArrowComponent function - A custom component for the arrows
auto number 0 0 = disabled auto sliding. Indicates the pausing time in milliseconds per slide before next slide is shown.
BulletComponent function - A custom component for one bullet
BulletsComponent function - A custom component for the bullets wrapper
bulletStyle object { } custom styles for the bullets
children node [ ] The children of the slider, every child is a single slide
hasArrows boolean false Whether the slider should have arrows or not
hasBullets boolean false Whether the slider should have bullets or not
onSlideChange function - Callback which is triggered when the slides changed either manually or automatically
setSlideCustom function - A function to overwrite the default setSlide behavior.
slidesAtOnce number 1 A number which represents how many slides should be shown at once.
slidesToSlide number 1 A number which represents how many slides should be slided with one interaction

More examples

Custom bulletStyle

<Slider hasBullets bulletStyle={{ backgroundColor: "#fff" }}>
  <MySlide />
  <MySlide />
  <MySlide />
</Slider>

Fully customized

import Slider from "@farbenmeer/react-spring-slider";
import { BulletComponentType } from "@farbenmeer/react-spring-slider/components/bullet";
import { ArrowComponentType } from "@farbenmeer/react-spring-slider/components/arrow";

const App = () => {
  const onSlideChange = (index) => console.log(`changed to slide ${index}`);
  const setSlideCustom = () => 1;

  return (
    <Slider
      activeIndex={2}
      slidesAtOnce={2}
      auto
      hasBullets
      BulletComponent={BulletComponent}
      ArrowComponent={ArrowComponent}
      onSlideChange={onSlideChange}
      setSlideCustom={setSlideCustom}
    >
      <div>child 1</div>
      <div>child 2</div>
      <div>child 3</div>
    </Slider>
  );
};

const BulletComponent: BulletComponentType = ({ onClick, isActive }) => (
  <li
    style={{
      width: "25px",
      height: "25px",
      backgroundColor: "red",
      margin: "0 2px",
      opacity: isActive && "0.5",
    }}
    onClick={onClick}
  />
);

const ArrowComponent: ArrowComponentType = ({ onClick, direction }) => {
  return (
    <div
      style={{
        border: "1px solid black",
        padding: "1em",
        backgroundColor: "white",
      }}
      onClick={onClick}
    >
      {direction}
    </div>
  );
};

For more examples have a look at storybook (storybook source code).

Contribution

See CONTRIBUTING.md