2016-07-04 10:51:50 +08:00
---
category: Components
2022-11-09 12:28:04 +08:00
group: Data Display
2016-07-04 10:51:50 +08:00
title: Collapse
2024-03-22 14:22:42 +08:00
description: A content area which can be collapsed and expanded.
2022-11-30 20:14:41 +08:00
cover: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*B7HKR5OBe8gAAAAAAAAAAAAADrJ8AQ/original
2023-02-09 22:17:31 +08:00
coverDark: https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sir-TK0HkWcAAAAAAAAAAAAADrJ8AQ/original
2016-07-04 10:51:50 +08:00
---
2016-09-10 13:43:30 +08:00
## When To Use
2016-07-04 10:51:50 +08:00
- Can be used to group or hide complex regions to keep the page clean.
- `Accordion` is a special kind of `Collapse` , which allows only one panel to be expanded at a time.
2023-05-25 10:19:56 +08:00
```tsx | pure
// works when >= 5.6.0, recommended ✅
const text = `
A dog is a type of domesticated animal.
Known for its loyalty and faithfulness,
it can be found as a welcome guest in many households across the world.
`;
const items: CollapseProps['items'] = [
{
key: '1',
label: 'This is panel header 1',
children: < p > {text}< / p > ,
},
{
key: '2',
label: 'This is panel header 2',
children: < p > {text}< / p > ,
},
{
key: '3',
label: 'This is panel header 3',
children: < p > {text}< / p > ,
},
];
< Collapse items = {items} defaultActiveKey = {['1']} / > ;
// works when < 5.6.0 , deprecated when > =5.6.0 🙅🏻♀️
< Collapse defaultActiveKey = {['1']} onChange = {onChange} >
< Panel header = "This is panel header 1" key = "1" >
< p > {text}< / p >
< / Panel >
< Panel header = "This is panel header 2" key = "2" >
< p > {text}< / p >
< / Panel >
< Panel header = "This is panel header 3" key = "3" >
< p > {text}< / p >
< / Panel >
< / Collapse > ;
```
2022-11-09 12:28:04 +08:00
## Examples
2022-11-17 17:31:26 +08:00
<!-- prettier - ignore -->
2022-11-09 12:28:04 +08:00
< code src = "./demo/basic.tsx" > Collapse< / code >
2023-01-21 18:45:09 +08:00
< code src = "./demo/size.tsx" > Size< / code >
2022-11-09 12:28:04 +08:00
< code src = "./demo/accordion.tsx" > Accordion< / code >
< code src = "./demo/mix.tsx" > Nested panel< / code >
< code src = "./demo/borderless.tsx" > Borderless< / code >
< code src = "./demo/custom.tsx" > Custom Panel< / code >
< code src = "./demo/noarrow.tsx" > No arrow< / code >
< code src = "./demo/extra.tsx" > Extra node< / code >
< code src = "./demo/ghost.tsx" > Ghost Collapse< / code >
< code src = "./demo/collapsible.tsx" > Collapsible< / code >
2023-08-14 19:19:32 +08:00
< code src = "./demo/component-token.tsx" debug > Component Token< / code >
2022-11-09 12:28:04 +08:00
2016-07-04 10:51:50 +08:00
## API
2023-08-08 18:27:48 +08:00
Common props ref: [Common props](/docs/react/common-props)
2016-07-04 10:51:50 +08:00
### Collapse
2022-11-17 17:31:26 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| accordion | If true, Collapse renders as Accordion | boolean | false | |
2024-05-18 21:23:31 +08:00
| activeKey | Key of the active panel | string\[] \| string < br /> number\[] \| number | No default value. In [accordion mode ](#components-collapse-demo-accordion ), it's the key of the first panel | |
2022-11-17 17:31:26 +08:00
| bordered | Toggles rendering of the border around the collapse block | boolean | true | |
| collapsible | Specify whether the panels of children be collapsible or the trigger area of collapsible | `header` \| `icon` \| `disabled` | - | 4.9.0 |
| defaultActiveKey | Key of the initial active panel | string\[] \| string < br /> number\[] \| number | - | |
| destroyInactivePanel | Destroy Inactive Panel | boolean | false | |
| expandIcon | Allow to customize collapse icon | (panelProps) => ReactNode | - | |
| expandIconPosition | Set expand icon position | `start` \| `end` | - | 4.21.0 |
| ghost | Make the collapse borderless and its background transparent | boolean | false | 4.4.0 |
2023-01-21 18:45:09 +08:00
| size | Set the size of collapse | `large` \| `middle` \| `small` | `middle` | 5.2.0 |
2022-11-17 17:31:26 +08:00
| onChange | Callback function executed when active panel is changed | function | - | |
2023-05-25 10:19:56 +08:00
| items | collapse items content | [ItemType ](https://github.com/react-component/collapse/blob/27250ca5415faab16db412b9bff2c131bb4f32fc/src/interface.ts#L6 ) | - | 5.6.0 |
2016-07-04 10:51:50 +08:00
### Collapse.Panel
2024-01-05 10:12:22 +08:00
<!-- prettier - ignore -->
:::info{title=Deprecated}
When using version >= 5.6.0, we prefer to configuring the panel by `items` .
:::
2023-05-25 10:19:56 +08:00
2022-11-17 17:31:26 +08:00
| Property | Description | Type | Default | Version |
| --- | --- | --- | --- | --- |
| collapsible | Specify whether the panel be collapsible or the trigger area of collapsible | `header` \| `icon` \| `disabled` | - | 4.9.0 (icon: 4.24.0) |
| extra | The extra element in the corner | ReactNode | - | |
| forceRender | Forced render of content on panel, instead of lazy rendering after clicking on header | boolean | false | |
| header | Title of the panel | ReactNode | - | |
| key | Unique key identifying the panel from among its siblings | string \| number | - | |
| showArrow | If false, panel will not show arrow icon. If false, collapsible can't be set as icon | boolean | true | |
2023-04-11 10:25:24 +08:00
## Design Token
< ComponentTokenTable component = "Collapse" > < / ComponentTokenTable >