react-collapse
Version:
Component-wrapper for collapse animation with react-motion for elements with variable (and dynamic) height
131 lines (82 loc) • 3.13 kB
Markdown
# react-collapse
[](https://gitter.im/nkbt/help)
[](https://circleci.com/gh/nkbt/react-collapse)
[](https://coveralls.io/r/nkbt/react-collapse?branch=master)
[](https://david-dm.org/nkbt/react-collapse)
[](https://david-dm.org/nkbt/react-collapse#info=devDependencies)
Component-wrapper for collapse animation with react-motion for elements with variable (and dynamic) height

## Installation
### npm
```sh
npm install --save react-collapse
```
### bower
```js
bower install --save react-collapse
```
## Demo
[http://nkbt.github.io/react-collapse/example](http://nkbt.github.io/react-collapse/example)
## Codepen demo
[http://codepen.io/nkbt/pen/MarzEg](http://codepen.io/nkbt/pen/MarzEg?editors=101)
## Usage
```js
<Collapse isOpened={true || false}>
<div>Random content</div>
</Collapse>
```
## Options
#### `isOpened`: PropTypes.boolean.isRequired
Expands or collapses content.
#### `children`: PropTypes.node.isRequired
One or multiple children with static, variable or dynamic height.
```js
<Collapse isOpened={true}>
<p>Paragraph of text</p>
<p>Another paragraph is also OK</p>
<p>Images and any other content are ok too</p>
<img src="nyancat.gif">
</Collapse>
```
#### `fixedHeight`: PropTypes.number
If content's height is known ahead it is possible to bypass the process of content height calculation by passing optional `fixedHeight` prop with number of pixels.
```js
<Collapse isOpened={true} fixedHeight={100}>
<div>Animated container will always expand to 100px height</div>
</Collapse>
```
#### `springConfig`: React.PropTypes.arrayOf(React.PropTypes.number)
Custom config `[stiffness, damping]` passed to the spring function (see https://github.com/chenglou/react-motion#spring-number---stiffness-damping---configurationobject)
```js
import {presets} from 'react-motion';
<Collapse isOpened={true} springConfig={presets.wobbly}>
<div>Wobbly animated container</div>
</Collapse>
<Collapse isOpened={true} springConfig={[100, 20]}>
<div>Customly animated container</div>
</Collapse>
```
#### Pass-through props
All other props are applied to a container that is being resized. So it is possible to pass `style` or `className`, for example.
```js
<Collapse isOpened={true}
style={{width: 200, border: '1px solid red'}}
className="collapse">
<div>
Animated container has red border, 200px width
and has `class="collapse"`
</div>
</Collapse>
```
## Development and testing
To run example covering all `ReactCollapse` features, use `npm start`, which will compile `src/example/Example.js`
```bash
git clone git@github.com:nkbt/react-collapse.git
cd react-collapse
npm install
npm start
# then
open http://localhost:8080
```
## License
MIT