https://github.com/react-component/collapse
React Collapse / Accordion
https://github.com/react-component/collapse
Last synced: 4 months ago
JSON representation
React Collapse / Accordion
- Host: GitHub
- URL: https://github.com/react-component/collapse
- Owner: react-component
- License: mit
- Created: 2015-06-22T13:23:05.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-08-12T05:58:31.000Z (5 months ago)
- Last Synced: 2025-08-22T09:24:12.807Z (4 months ago)
- Language: TypeScript
- Homepage: https://collapse-react-component.vercel.app/
- Size: 2.09 MB
- Stars: 330
- Watchers: 26
- Forks: 139
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE.md
Awesome Lists containing this project
README
# rc-collapse
rc-collapse ui component for react
[![NPM version][npm-image]][npm-url] [![build status][github-actions-image]][github-actions-url] [![Test coverage][codecov-image]][codecov-url] [![npm download][download-image]][download-url]
[npm-image]: http://img.shields.io/npm/v/rc-collapse.svg?style=flat-square
[npm-url]: http://npmjs.org/package/rc-collapse
[github-actions-image]: https://github.com/react-component/collapse/workflows/CI/badge.svg
[github-actions-url]: https://github.com/react-component/collapse/actions
[codecov-image]: https://img.shields.io/codecov/c/github/react-component/collapse/master.svg?style=flat-square
[codecov-url]: https://app.codecov.io/gh/react-component/collapse
[download-image]: https://img.shields.io/npm/dm/rc-collapse.svg?style=flat-square
[download-url]: https://npmjs.org/package/rc-collapse
## Live Demo
https://collapse-react-component.vercel.app
## Install
[](https://npmjs.org/package/rc-collapse)
## Usage
```js
var Collapse = require('rc-collapse');
var Panel = Collapse.Panel;
var React = require('react');
var ReactDOM = require('react-dom');
require('rc-collapse/assets/index.css');
var App = (
this is panel content
this is panel content2 or other
);
ReactDOM.render(App, container);
```
## Features
- support ie8,ie8+,chrome,firefox,safari
## API
### Collapse props
name
type
default
description
activeKey
String|Array
The first panel key
current active Panel key
className
String or object
custom className to apply
defaultActiveKey
String|Array
null
default active key
destroyOnHidden
Boolean
false
If destroy the panel which not active, default false.
accordion
Boolean
false
accordion mode, default is null, is collapse mode
onChange
Function(key)
noop
called when collapse Panel is changed
expandIcon
(props: PanelProps) => ReactNode
specific the custom expand icon.
collapsible
'header' | 'icon' | 'disabled'
-
specify whether the panel of children is collapsible or the area of collapsible.
items
interface.ts#ItemType
-
collapse items content
If `accordion` is null or false, every panel can open. Opening another panel will not close any of the other panels. `activeKey` should be an string, if passing an array (the first item in the array will be used).
If `accordion` is true, only one panel can be open. Opening another panel will cause the previously opened panel to close. `activeKey` should be an string, if passing an array (the first item in the array will be used).
### Collapse.Panel props
> **deprecated** use `items` instead, will be removed in `v4.0.0`
name
type
default
description
header
String or node
header content of Panel
headerClass
String
' '
custom className to apply to header
showArrow
boolean
true
show arrow beside header
className
String or object
custom className to apply
classNames
{ header?: string, body?: string }
Semantic structure className
style
object
custom style
styles
{ header?: React.CSSProperties, body?: React.CSSProperties }
Semantic structure styles
openMotion
object
set the animation of open behavior, [more](https://github.com/react-component/motion). Different with v2, closed pane use a `rc-collapse-content-hidden` class to set `display: none` for hidden.
forceRender
boolean
false
forced render of content in panel, not lazy render after clicking on header
extra
String | ReactNode
Content to render in the right of the panel header
collapsible
'header' | 'icon' | 'disabled'
-
specify whether the panel be collapsible or the area of collapsible.
> `disabled` is removed since 3.0.0, please use `collapsible=disabled` replace it.
#### key
If `key` is not provided, the panel's index will be used instead.
#### KeyBoard Event
By default, Collapse will listen `onKeyDown`(<3.7.0 `onKeyPress`) event with `enter` key to toggle panel's active state when `collapsible` is not `disabled`. If you want to disable this behavior, you can prevent the event from bubbling like this:
```tsx | pure
const App = () => {
const items: CollapseProps['items'] = [
{
label: e.stopPropagation()} />,
children: 'content',
},
{
label: (
e.stopPropagation()}>
),
children: 'content',
},
{
label: 'title 2',
children: 'content 2',
collapsible: 'disabled',
},
{
label: 'title 3',
children: 'content 3',
onItemClick: console.log,
},
];
return ;
};
```
## Development
```bash
npm install
npm start
```
## Test Case
```bash
npm test
```
## Coverage
```bash
npm test -- --coverage
```
## License
rc-collapse is released under the MIT license.