1.1.0 • Published 5 years ago

karuseru v1.1.0

Weekly downloads
1
License
ISC
Repository
github
Last release
5 years ago

Karuseru

A simple react carousel component.

Demo

https://vacasan.github.io/karuseru/

Instalation

npm install --save karuseru

Usage

Slides only

Carousel with slides only.

import React, { Component } from 'react';
import Karuseru from 'karuseru';

class Carousel extends Component {
  constructor(props) {
    super(props);

    this.state = {
      slide: 0,
    };
  }

  onChange = ({ slide }) => {
    this.setState({ slide });
  }

  render() {
    return (
      <Karuseru
        slide={this.state.slide}
        onChange={this.onChange}
      >
        <div>hello</div>
        <div>world</div>
      </Karuseru>
    );
  }
}

With controls

Adding in the previous and next controls:

import React, { Component } from 'react';
import Karuseru from 'karuseru';

class CarouselWithControls extends Component {
  constructor(props) {
    super(props);

    this.state = {
      slide: 0,
      hasNext: true,
      hasPrev: false,
    };

    this.carousel = React.createRef();
  }

  onChange = ({ slide, length }) => {
    this.setState({
      slide,
      hasNext: slide < length - 1,
      hasPrev: slide > 0,
    });
  }

  next = () => this.carousel.current.next();

  prev = () => this.carousel.current.prev();

  render() {
    return (
      <div>
        <Karuseru
          ref={this.carousel}
          slide={slide}
          onChange={this.onChange}
        >
          {[1, 2, 3, 4].map((n) => <div key={n}>{n}</div>)}
        </Karuseru>
        <button onClick={this.prev} disabled={!hasPrev}>&lt;</button>
        <button onClick={this.next} disabled={!hasNext}>&gt;</button>
      </div>
    );
  }
}

React Simple Carousel API

Props

NameTypeDescription
childrennode(required) Slides to render.
slidenumber(required) Current slide index.
onChange({ slide: number, length: number }) => voidFunction(required) Function that runs whenever the carousel value is changed and committed by way of a user event, e.g. when a user stops dragging the carousel.
disabled[boolean=false]Disable dragging and touch swiping.
settings[Object]Additional parameters.
settings.duration[number=250]Transition duration (in ms).
settings.delay[number=0]Transition delay (in ms).
settings.easing[string=cubic-bezier(0.0, 0.0, 0.2, 1)]Easing function.

Methods

MethodDescription
next() => voidSets the next slide as active.
prev() => voidSets the previous slide as active.
goTo(slide: number) => voidSets the given slide as active.
layout([callback: Function]) => voidRecomputes the dimensions and re-lays out the component. This should be called if the dimensions of the slider itself or any of its parent element change programmatically (it is called automatically on resize).

License

MIT