A Simple multifunctional controlled react.js carousel component
react-simply-carousel
Simple multifunctional controlled react.js carousel component. Touch enabled, responsive, infinite, with autoplay support. (with ssr support)
Installation
npm
npm install react-simply-carousel --save
yarn
yarn add react-simply-carousel
Usage
Basic Example:
import React, { Component } from "react";
import Carousel from "react-simply-carousel";
class App extends Component {
  state = {
    activeSlideIndex: 0,
  };
  setActiveSlideIndex = (newActiveSlideIndex) => {
    this.setState({
      activeSlideIndex: newActiveSlideIndex,
    });
  };
  render() {
    return (
      <Carousel
        activeSlideIndex={this.state.activeSlideIndex}
        onRequestChange={this.setActiveSlideIndex}
        itemsToShow={3}
        itemsToScroll={3}
      >
        <div style={{ width: 300, height: 300 }}>slide 0</div>
        <div style={{ width: 300, height: 300 }}>slide 1</div>
        <div style={{ width: 300, height: 300 }}>slide 2</div>
        <div style={{ width: 300, height: 300 }}>slide 3</div>
        <div style={{ width: 300, height: 300 }}>slide 4</div>
        <div style={{ width: 300, height: 300 }}>slide 5</div>
        <div style={{ width: 300, height: 300 }}>slide 6</div>
        <div style={{ width: 300, height: 300 }}>slide 7</div>
        <div style={{ width: 300, height: 300 }}>slide 8</div>
        <div style={{ width: 300, height: 300 }}>slide 9</div>
      </Carousel>
    );
  }
}
Props
| Name | Type | Default Value | Description | 
|---|---|---|---|
| activeSlideIndex | number | Index of active slide | |
| activeSlideProps | object | {} | DOM props for active slide element | 
| autoplay | boolean | false | |
| autoplayDirection | string ( 'forward'or'backward') | 'forward' | |
| backwardBtnProps | object | {} | DOM props for carousel backward nav button element (include boolean prop show(for toggle button render) and node propchildren(for render button childrens)) | 
| children | node | null | slides array | 
| containerProps | object | {} | DOM props for carousel container div element | 
| delay | number | 0 | Slide change delay (css transition delay) in ms | 
| disableNavIfAllVisible | boolean | true | Disable carousel nav if all slides is visible | 
| easing | string | 'linear' | Slide change easing (css transition easing) | 
| forwardBtnProps | object | {} | DOM props for carousel forward nav button element (include boolean prop show(for toggle button render) and node propchildren(for render button childrens)) | 
| hideNavIfAllVisible | boolean | true | Hide nav buttons if all slides is visible | 
| innerProps | object | {} | DOM props for inner div element | 
| itemsListProps | object | {} | DOM props for items list div element | 
| itemsToScroll | number | 1 | How many slides to scroll at once | 
| itemsToShow | number | 0(automaticaly calculated) | How many slides to show | 
| onAfterChange | function | null | activeSlideIndex change callback | 
| onRequestChange | function | Callback to handle every time the active slide changes, receives the new active index as arguments. | |
| responsiveProps | Array of objects | [] | carousel props for different window width. For example: [{minWidth: 768, maxWidth: 992, itemsToShow: 3}, {maxWidth: 767, itemsToShow: 1}]will show only one slide when window width is less than 767px and show 3 slides when window width is >= 768px and < 992px | 
| speed | number | 0 | Carousel scroll speed (css transition speed) in ms | 
| updateOnItemClick | boolean | false | Update active item index after click on some slide | 
| centerMode (disabled if infiniteprop disabled) | boolean | false | Align active slide to the center of the carousel container viewport | 
| infinite | boolean | true | Enable infinite loop scroll | 
| disableNavIfEdgeVisible (disabled if infiniteprop enabled) | boolean | true | Disable carousel forward nav if last slide is visible / Disable carousel backward nav if first slide is visible | 
| disableNavIfEdgeActive | boolean | true | Disable carousel forward nav if activeSlideIndex === lastSlideIndex / Disable carousel backward nav if activeSlideIndex === 0 | 
| dotsNav (experimental) (disabled if infiniteprop enabled) | object | {} | Props for carousel dots. includes show(boolean) for toggle dots nav visibility, activeClassName (className for active dot) and DOM props for all dots nav buttons |