Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/filipchalupa/collapsible-react-component

React component to collapse and expand content with an animation.
https://github.com/filipchalupa/collapsible-react-component

component package react

Last synced: about 15 hours ago
JSON representation

React component to collapse and expand content with an animation.

Awesome Lists containing this project

README

        

# Collapsible react component

> Collapses and expands content with an animation.

[![NPM](https://img.shields.io/npm/v/collapsible-react-component.svg)](https://www.npmjs.com/package/collapsible-react-component) ![npm type definitions](https://img.shields.io/npm/types/shared-loading-indicator.svg)

![screencast](https://raw.githubusercontent.com/FilipChalupa/collapsible-react-component/HEAD/screencast.gif)

Try [interactive demo](https://codesandbox.io/s/collapsible-react-component-example-8t6c3b?file=/src/App.js).

## Install

```bash
npm install collapsible-react-component
```

## Usage

```tsx
import React from 'react'

import { Collapsible } from 'collapsible-react-component'
import 'collapsible-react-component/dist/index.css'

const Example = () => {
const [open, setOpen] = React.useState(true)

return (
<>
{
setOpen(!open)
}}
>
{open ? 'Close' : 'Open'}

{
console.log('Collapsible box used to be', open ? 'open' : 'closed')
}}
onTransitionEnd={(open) => {
console.log('Collapsible box is now', open ? 'open' : 'closed')
}}
revealType='bottomFirst'
>
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Odio, sed
labore? Autem laboriosam minima corrupti rem repellat odio reiciendis
nihil! Eum natus dolorem atque blanditiis ipsam aperiam. Voluptatem,
exercitationem fugit.

>
)
}
```

### Props

| Name | Required | Default | Type | Description |
| ------------------- | -------- | ------------- | ------------------------- | ------------------------------------------------------------------------------------ |
| `open` | ✅ | none | `boolean` | Determines wheter the children content should be visible. |
| `children` | ✅ | none | `ReactNode` | Collapsible content. |
| `onTransitionStart` | | noop | `(open: boolean) => void` | Callback invoked when transition starts. `open` is the starting state. |
| `onTransitionEnd` | | noop | `(open: boolean) => void` | Callback after content is fully expanded or fully closed. `open` is the final state. |
| `revealType` | | `bottomFirst` | `bottomFirst \| topFirst` | Type of transition animation. |

## Development

Run

```sh
npm ci
npm run dev
```

and

```sh
cd example
npm ci
npm run dev
```