UNPKG

react-expand-animated

Version:

The expand component that animate the height of child component when toggling

83 lines (61 loc) 2.76 kB
<div align="center"><strong>React Expand</strong></div> <div align="center"> <a href="https://david-dm.org/sonybinhle/react-expand-animated"> <img src="https://david-dm.org/sonybinhle/react-expand-animated.svg" alt="Dependency Status" /> </a> <a href="https://david-dm.org/sonybinhle/react-expand-animated#info=devDependencies"> <img src="https://david-dm.org/sonybinhle/react-expand-animated/dev-status.svg" alt="devDependency Status" /> </a> <a href="https://travis-ci.org/sonybinhle/react-expand-animated"> <img src="https://travis-ci.org/sonybinhle/react-expand-animated.svg" alt="Build Status" /> </a> <a href='https://coveralls.io/github/sonybinhle/react-expand-animated?branch=master'> <img src='https://coveralls.io/repos/github/sonybinhle/react-expand-animated/badge.svg?branch=master' alt='Coverage Status' /> </a> </div> ## react-expand-animated 1.0.2 Simple expandable wrapper component with height, opacity animation. ## Demo <a href="https://codesandbox.io/s/107wq1klr4"> <img alt="Edit 107wq1klr4" src="https://codesandbox.io/static/img/play-codesandbox.svg"> </a> ## Install `npm i react-expand-animated` ## Usage ```jsx harmony import React, { Component } from 'react'; import Expand from 'react-expand-animated'; class App extends Component { state = { open: false }; toggle = () => { this.setState(prevState => ({ open: !prevState.open })); }; render() { return ( <Fragment> <button onClick={this.toggle}>Open</button> <Expand open={this.state.open}> <div style={{ width: '300px', height: '400px', color: 'red' }}>Hello</div> </Expand> </Fragment> ); } } export default App; ``` ## Props | Props | Type | Required | Default | Description | | ------------- | ------------- | ------------- | ------------- | ------------- | | **children** | node | true | undefined | The expanded or collapsed content | | **open** | bool | false | false | When set to true expand the children component otherwise collapse it | | **duration** | number | false | 400 | Animation duration in ms | | **easing** | string | false | 'ease-in-out' | Css3 Animation's type | | **className** | string | false | '' | Wrapper's className | | **tag** | string | false | 'div' | Wrapper's tag | | **transitions** | arrayOf(string) | false | ['height', 'opacity'] | Transition attributes | | **styles** | arrayOf(shape({ open: object, close: object })) | false | {} | Additional inline-styles on open or close phase. For example: ``` styles={open: { marginTop: 100 }, close: { marginTop: 0 }} ``` | ## Development Dev: ``` npm run dev ``` Build: ``` npm run build ``` Test: ``` npm test ``` Test Coverage: ``` npm run test:cov ```