npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-animation-components

v3.0.0

Published

A set of react transition components for basic animations.

Downloads

419

Readme

react-animation-components

Travis

A set of React components using React Transition Group to provide drop in GPU accelerated animations and wrappers for group effects.

Checkout the Storybook!

Installation

npm install react-animation-components

Make sure you also have installed the following peer dependencies:

    "react": "^16.0.0",
    "react-dom": "^16.0.0",
    "react-transition-group": "^2.2.1",
    "prop-types": "^15.6.0"

Animation Components

Props available on all animation components

The following are available on any animation component as well as any valid Transition props. Transitions are set to appear and their timeout is calculated by combining the delay and duration by default but can be overwritten.

| Key | Description | Example | Type | Default Value | | --------- | ---------------------------------------------- | -------------------- | -------- | ------------- | | className | Passes className to wrapper div | some-class | string | undefined | | delay | Sets the animations transitionDelay | 500 | number | 0 | | duration | Sets the animations transitionDuration | 1000 | number | 500 | | style | Passes styles to wrapper div | { display:'flex' } | object | {} | | timingFn | Sets the animations transitionTimingFunction | 'ease-in-out' | string | 'ease' |

Fade

Transitions the wrapped element's opacity from one value to another

Props

| Key | Description | Example | Type | Default Value | | ------------ | -------------------------------------- | ------- | -------- | ------------- | | enterOpacity | The opacity value when in is true | 0.85 | number | 0 | | exitOpacity | The opacity value when in is false | 0.25 | number | 0 |

Examples

import { Fade } from 'react-animation-components'

<Fade in>
  <h1>I'm transitioning to opacity:1</h1>
</Fade>

<Fade in enterOpacity={0.85}>
  <h1>I'm transitioning to opacity:0.85</h1>
</Fade>

<Fade in={false}>
  <h1>I'm transitioning to opacity:0</h1>
</Fade>

<Fade in={false} exitOpacity={0.25}>
  <h1>I'm transitioning to opacity:0.25</h1>
</Fade>

Transform

Transitions the wrapped element from one transform property to another. Any valid transform property will work.

Props

| Key | Description | Example | Type | Default Value | | -------------- | ---------------------------------------- | --------------------- | -------- | ------------- | | enterTransform | The transform value when in is true | 'translateX(100px)' | string | 'none' | | exitTransform | The transform value when in is false | 'translateX(100px)' | string | 'none' |

Examples

import { Transform } from 'react-animation-components'

<Transform enterTransform="translateX(100px)" in>
  <h1>I'm transitioning from my initial position to 100px right when `in` is `true`</h1>
</Transform>

<Transform enterTransform="translateX(100px)" exitTransform="translateX(-100px)" in>
  <h1>
    I'm 100px to the left of my initial position and
    I transition 100px right of my initial when `in` is `true`
  </h1>
</Transform>

<Transform enterTransform="rotate(90deg)" in>
  <h1>I transition from initial positon to rotate 90deg when `in` is `true`</h1>
</Transform>

FadeTransform

Composes Fade and Transform. All top level props are passed to both components. You can also pass props to individual components in the composition.

Props passed to indivudal components via fadeProps or transformProps will override any top level props

Props

| Key | Description | Example | Type | Default Value | | -------------- | ----------------------------------------- | ----------------------------------------- | -------- | ------------- | | fadeProps | The props that only Fade recieves. | { enterOpacity: 0.85 } | object | {} | | transformProps | The props that only Transform recieves. | { enterTransform: 'translateX(100px)' } | object | {} |

Examples

import { FadeTransform } from 'react-animation-components'

<FadeTransform in transformProps={{ enterTransform: 'translateX(100px)' }}>
  <h1>I'm transitioning from my initial position to 100px right when `in` is `true`</h1>
</FadeTransform>

<FadeTransform
    in
    transformProps={{
        enterTransform: 'translateX(100px)',
        exitTransform: 'translateX(-100px)'
    }}
>
  <h1>
    I'm 100px to the left of my initial position and
    I transition 100px right of my initial when `in` is `true`
  </h1>
</FadeTransform>

<FadeTransform
    in
    transformProps={{
        exitTransform: 'translateX(-100px)'
    }}
    fadeProps={{
        enterOpacity: 0.85,
    }}
>
  <h1>I transition from `-100px` horizontally of my initial positon and to 0.85 opacity when `in` is `true`</h1>
</FadeTransform>

Wrapper Components

Wrapper components use the inner animation components onEntered and onExited. Setting those callbacks inside these wrappers will not work

Stagger

Uses TransitionGroup to stagger delay on a set of animation components

Props

| Key | Description | Example | Type | Default Value | | ---------- | ----------------------------------------------------------------- | ------------------ | ---------- | -------------------------- | | chunk | Used to limit the stagger into "chunks". | 5 | number | 0 | | delay | The amount to separate each stagger by | 1000 | number | 100 | | duration | A value to set the inner child animations transition duration | 800 | number | 500 | | in | A boolean to tell the children to mount or unmount | true | boolean | false | | onComplete | A function that is called after the last animation finishes | any valid function | function | Function.prototype(noop) | | reverse | A boolean to tell the component to reverse how delays are applied | true | boolean | false |

Examples

import { Fade, Stagger } from 'react-animation-components'

const items = ['first', 'second', 'third', 'fourth', 'fifth'];

<Stagger in>
    {items.map(
        item => (
            <Fade>
                <h1>Each {item} will transition in with an incrementally larger delay than the previous</h1>
            </Fade>
        )
    )}
</Stagger>

<Stagger chunk={4} in>
    {items.map(
        item => (
            <Fade>
                <h1>
                  Each {item} will increment in segments of 4.
                  First is 0, Second is 100, Third is 200, Fourth is 0, fifth is 100, and so on
                </h1>
            </Fade>
        )
    )}
</Stagger>

Random

Uses TransitionGroup to randomize delay on a set of animation components

Props

| Key | Description | Example | Type | Default Value | | ---------- | ----------------------------------------------------------------- | ------------------ | ---------- | -------------------------- | | duration | A value to set the inner child animations transition duration | 800 | number | 500 | | in | A boolean to tell the children to mount or unmount | true | boolean | false | | maxDelay | Maximum delay possible | 5000 | number | 1500 | | minDelay | Minimum delay possible | 100 | number | 0 | | onComplete | A function that is called after the last animation finishes | any valid function | function | Function.prototype(noop) | | reverse | A boolean to tell the component to reverse how delays are applied | true | boolean | false |

Examples

import { Fade, Random } from 'react-animation-components'

const items = ['first', 'second', 'third', 'fourth', 'fifth'];

<Random in>
    {items.map(
        item => (
            <Fade>
                <h1>Each {item} will randomly FadeIn between 0 and 1500ms</h1>
            </Fade>
        )
    )}
</Random>

<Random minDelay={1000} maxDelay={5000} in>
    {items.map(
        item => (
            <Fade>
                <h1>Each {item} will randomly FadeIn between 1000ms and 5000ms</h1>
            </Fade>
        )
    )}
</Random>

Loop

Loops using the onEntered and onExited callbacks to toggle in on a single animation component.

Props

| Key | Description | Example | Type | Default Value | | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------ | ---------- | -------------------------- | | in | Initializes the loop when true | true | bool | false | | interval | Sets the interval to toggle in. Also sets the duration | 1000 | number | 500 | | iterations | Maximum number of loops | 5.5 | number | Infinity | | onComplete | Callback that is called when the iterations have been met. Waits an additional interval to ensure its called when the last iteration has completed | any valid function | function | Function.prototype(noop) | | onIterate | Callback that is called with the current count each time the loop iterates. Count is incremented by 0.5 | any valid function | function | Function.prototype(noop) |

Examples

import { Fade, Loop } from 'react-animation-components'

<Loop in>
    <Fade>
        <h1>I will Fade in and out repeatedly on 500ms intervals</h1>
    </Fade>
</Loop>

<Loop in iterations={5.5}>
    <Fade>
        <h1>I will Fade in and out repeatedly on 500ms intervals 5.5 times</h1>
    </Fade>
</Loop>