# Row expand
`react-bootstrap-table2` supports the row expand feature. By passing prop `expandRow` to enable this functionality.
> Default is click to expand/collapse a row. In addition, we don't support any way to chagne this mechanism!
## Required
* [renderer (**required**)](#renderer)
## Optional
* [expanded](#expanded)
* [nonExpandable](#nonExpandable)
* [onExpand](#onExpand)
* [onExpandAll](#onExpandAll)
* [showExpandColumn](#showExpandColumn)
* [expandColumnRenderer](#expandColumnRenderer)
* [expandHeaderColumnRenderer](#expandHeaderColumnRenderer)
### expandRow.renderer - [Function]
Specify the content of expand row, `react-bootstrap-table2` will pass a row object as argument and expect return a react element.
#### values
* **row**
#### examples
```js
const expandRow = {
renderer: row => (
{ `This Expand row is belong to rowKey ${row.id}` }
You can render anything here, also you can add additional data on every row object
expandRow.renderer callback will pass the origin row object to you
)
};
```
### expandRow.expanded - [Array]
`expandRow.expanded` allow you have default row expandations on table.
```js
const expandRow = {
renderer: (row) => ...
expanded: [1, 3] // should be a row keys array
};
```
### expandRow.nonExpandable - [Array]
This prop allow you to restrict some rows which can not be expanded by user. `expandRow.nonExpandable` accept an rowkeys array.
```js
const expandRow = {
renderer: (row) => ...
nonExpandable: [1, 3 ,5]
};
```
### expandRow.onExpand - [Function]
This callback function will be called when a row is expand/collapse and pass following four arguments:
`row`, `isExpand`, `rowIndex` and `e`.
```js
const expandRow = {
renderer: (row) => ...
onExpand: (row, isExpand, rowIndex, e) => {
// ...
}
};
```
### expandRow.onExpandAll - [Function]
This callback function will be called when expand/collapse all. It only work when you configure [`expandRow.showExpandColumn`](#showExpandColumn) as `true`.
```js
const expandRow = {
renderer: (row) => ...
onExpandAll: (isExpandAll, results, e) => {
// ...
}
};
```
### expandRow.expandColumnRenderer - [Function]
Provide a callback function which allow you to custom the expand indicator. This callback only have one argument which is an object and contain one property `expanded` which indicate if current row is expanded
```js
const expandRow = {
renderer: (row) => ...
expandColumnRenderer: ({ expanded }) => (
// ....
)
};
```
> By default, `react-bootstrap-table2` will help you to handle the click event, it's not necessary to handle again by developer.
### expandRow.expandHeaderColumnRenderer - [Function]
Provide a callback function which allow you to custom the expand indicator in the expand header column. This callback only have one argument which is an object and contain one property `isAnyExpands` which indicate if there's any rows are expanded:
```js
const expandRow = {
renderer: (row) => ...
expandHeaderColumnRenderer: ({ isAnyExpands }) => (
// ....
)
};
```
> By default, `react-bootstrap-table2` will help you to handle the click event, it's not necessary to handle again by developer.
### expandRow.showExpandColumn - [Bool]
Default is `false`, if you want to have a expand indicator, give this prop as `true`
```js
const expandRow = {
renderer: (row) => ...
showExpandColumn: true
};
```