Giter VIP home page Giter VIP logo

react-whirligig's Introduction

react-whirligig

A carousel/slider-like component for sequentially displaying slides or sets of slides.

CircleCI Known Vulnerabilities Coverage Status


Basic Usage

const Slider = ({ slideIndex }) => (
  <div>
    <Whirligig visibleSlides={3} gutter="1em" slideTo={slideIndex}>
      <img src="http://www.fillmurray.com/400/300" />
      <img src="http://www.fillmurray.com/300/400" />
      <img src="http://www.fillmurray.com/400/200" />
      <img src="http://www.fillmurray.com/200/400" />
      <img src="http://www.fillmurray.com/500/300" />
    </Whirligig>
  </div>
)

react-whirligig exposes next and prev functions for moving the whirligig forward and backward the number of visible slides. These functions can be accessed using the ref prop callback to get a reference to the Whirligig instance.

import React from 'react'
import Whirligig from 'react-whirligig'

const Slider = () => {
  let whirligig
  const next = () => whirligig.next()
  const prev = () => whirligig.prev()

  return (
    <div>
      <button onClick={prev}>Prev</button>
      <Whirligig
        visibleSlides={3}
        gutter="1em"
        ref={(_whirligigInstance) => { whirligig = _whirligigInstance}}
      >
        <img src="http://www.fillmurray.com/400/300" />
        <img src="http://www.fillmurray.com/300/400" />
        <img src="http://www.fillmurray.com/400/200" />
        <img src="http://www.fillmurray.com/200/400" />
        <img src="http://www.fillmurray.com/500/300" />
      </Whirligig>
      <button onClick={next}>Next</button>
    </div>
  )
}

See the demo code for advanced usage.

Whirligig

The Whirligig component is a horizontally oriented container of Slides.

Props

Each of these is written in the form propName: type = default. So, foo: (string) => bool = noop is a prop called foo which is expected to be a function that takes a string and returns a boolean, and it defaults to a noop.

afterSlide: (number) => void = noop

A function to be called after the whirligig transitions to a new "active" slide. The function is passed the new "active" slide index.

animationDuration: number = 500

The number of milliseconds the slide animation should take.

beforeSlide: (number) => void = noop

A function to be called before the whirligig transitions to a new "active" slide. The function is passed what the new "active" slide index will be.

className: string = ''

A className applied to the Whirligig.

easing: (number) => number = easeOutQuint

A function which takes a float representing the percentage of time that has passed for a given animation and returns a float representing the relative progress of the element being animated. See https://gist.github.com/gre/1650294 for examples.

infinte: bool = false

A boolean flag that determines whether the whirligig should wrap to the beginning/end when sliding beyond the slide index bounds.

gutter: string = '1em'

A css length string that represents the space between each Slide in the Whirligig

nextKeys: string[] = [ 'ArrowRight' ]

An array of valid "Key" values from a KeyboardEvent indicating what "Key" values, when pressed, should move the whirligig forward.

onSlideClick: (SyntheticMouseEvent<*>) => void = noop

Function that takes a SyntheticMouseEvent.

prevKeys: string[] = [ 'ArrowLeft' ]

An array of valid "Key" values from a KeyboardEvent indicating what "Key" values, when pressed, should move the whirligig backward

preventScroll: bool = false

A boolean flag that turns off/on the ability to natively scroll through the Whirligig

preventSwipe: bool = false

A boolean flag that turns off/on the ability to swipe through the Whirligig

slideBy: number = visibleSlides || 1

The number of slides that should advance on a next, prev, or swipe action. If not specified, will reflect the visibleSlides prop value or 1.

slideClass: string = ''

A className to apply to the Slide container.

slideTo: number = 0

The index to which the whirligig should transition if it is not already there. This is distinct from startAt in that startAt is only effective when the component mounts and does not transition, but moves immediately to the given slide. The slideTo prop is meant to be used as a mechanism for the consuming component to directly control when and where the whirligig transitions to.

snapToSlide: bool = false

A boolean flag that turns on/off the snap-to-slide feature. If set, the Whirligig will animate the final bit of scrolling to stop at a slide.

startAt: number = 0

The Slide index that will be the "active" slide when the Whirligig mounts. The value will be normalized to be within the range of the length of the Whirligig's children.

visibleSlides: number = 1

The number of slides that should be visible at a time for the Whirligig

Instance methods

next: () => Promise<*>

Advances the whirligig to the next set of visible slides. If there are not enough remaining slides to transition the full number of visible slides, it will transition to the end of the whirligig If already at the end of the whirligig, calling next will transition the whirligig to index 0.

prev: () => Promise<*>

Recedes the whirligig to the previous set of visible slides. If there are not enough remaining slides to transition the full number of visible slides, it will transition to the beginning of the whirligig If already at the beginning of the whirligig, calling prev will transition the whirligig to last full set of visible slides in the whirligig.

Contributors

License

MIT

react-whirligig's People

Contributors

311chaos avatar nedimb86 avatar spicydonuts avatar uniqname avatar zacanger avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.