maxmarinich / react-alice-carousel

React responsive component for building content galleries, content rotators and any React carousels
MIT License
832 stars 91 forks source link
carousel content-rotator gallery image-gallery image-slider react-carousels react-component react-content-carousel react-content-rotator react-image-gallery

React Alice Carousel

npm version Build Status

React Alice Carousel is a React component for building content galleries, content rotators and any React carousels.

πŸ‘‰  Live demo (API): v2.x.x

πŸ‘‰  Previous version (API): v1.x.x

demo gif

demo gif

Features

Installation

npm i react-alice-carousel

Style import

# CSS
@import "react-alice-carousel/lib/alice-carousel.css";
# SCSS
@import "react-alice-carousel/lib/scss/alice-carousel.scss";

Usage

import React from 'react';
import AliceCarousel from 'react-alice-carousel';
import 'react-alice-carousel/lib/alice-carousel.css';

const handleDragStart = (e) => e.preventDefault();

const items = [
    <img src="https://github.com/maxmarinich/react-alice-carousel/raw/master/path-to-img" onDragStart={handleDragStart} role="presentation" />,
    <img src="https://github.com/maxmarinich/react-alice-carousel/raw/master/path-to-img" onDragStart={handleDragStart} role="presentation" />,
    <img src="https://github.com/maxmarinich/react-alice-carousel/raw/master/path-to-img" onDragStart={handleDragStart} role="presentation" />,
];

const Gallery = () => <AliceCarousel mouseTracking items={items} />;

Options

Methods (Refs example)

Components (Links example)

import React from 'react';
import AliceCarousel, { Link } from 'react-alice-carousel';
import 'react-alice-carousel/lib/alice-carousel.css';

const Gallery = () => {
  return (
    <AliceCarousel mouseTracking>
      <Link href="#">
        <img src="https://github.com/maxmarinich/react-alice-carousel/raw/master/path-to-image" />
      </Link>
    </AliceCarousel>
  );
};

Types

type EventObject = {
    item: number;
    slide: number;
    itemsInSlide: number;
    isPrevSlideDisabled: boolean;
    isNextSlideDisabled: boolean;
    type: EventType;
};

type SlideInfo = {
    item: number;
    itemsCount: number;
};

type DotsItem = {
    isActive: boolean;
    activeIndex: number;
};

enum EventType {
    ACTION = 'action', // used if a general user action (button click or swipe)
    INIT = 'init', // used if the initial event was triggered
    RESIZE = 'resize', // used if the gallery size was changed
    UPDATE = 'update', // used if the gallery was updated with props
}

CSS classes

.alice-carousel
    .alice-carousel__stage
    .alice-carousel__stage-item
    .alice-carousel__prev-btn
    .alice-carousel__prev-btn-item
    .alice-carousel__next-btn
    .alice-carousel__next-btn-item
    .alice-carousel__play-btn
    .alice-carousel__play-btn-item
    .alice-carousel__dots
    .alice-carousel__dots-item
    .alice-carousel__slide-info
    .alice-carousel__slide-info-item;

CSS modifiers

.alice-carousel.__ssr
    .alice-carousel__stage-item.__active
    .alice-carousel__stage-item.__cloned
    .alice-carousel__stage-item.__target
    .alice-carousel__next-btn-item.__inactive
    .alice-carousel__prev-btn-item.__inactive
    .alice-carousel__play-btn-item.__pause
    .alice-carousel__dots-item.__active
    .alice-carousel__dots-item.__custom
    .alice-carousel__slide-info-item.__separator;

Build the project locally

Clone

git clone https://github.com/maxmarinich/react-alice-carousel
cd react-alice-carousel

Run

npm ci
npm start

Test

npm test

License

MIT