Reputation: 200
I'm working with React DataTable react-data-table-component
and I need to have an expandable table. In order to make the table expandable I have set expandableRows
as true and I have also provided expandableRowsComponent
. With the default react data-table implementation I can expand all the available rows in the table simultaneously. However, I would like to expand only 1 row at a time. So if I try to expand another row the already expanded row should collapse. How can I achieve this?
I also tried to use onRowExpandToggled
. When I click a row to expand it returns the row that I expanded and value true. When the row is collapsed it returns false. I believe that I need to use this function to auto collapse the expanded rows but not sure how?
Upvotes: 2
Views: 5283
Reputation: 56
You can do this by leveraging on one more prop, the expandableRowExpanded which tracks the current row that is expanded. It takes a callback that you can use to compare to a state that you set in the onRowExpandToggled prop.
const [currentRow, setCurrentRow] = useState(null);
<DataTable
expandableRows
expandableRowExpanded={(row) => (row === currentRow)}
expandOnRowClicked
onRowClicked={(row) => setCurrentRow(row)}
expandableRowsComponent={<ExpandableTable />}
onRowExpandToggled={(bool, row) => setCurrentRow(row)}
data={filteredData}
/>
Upvotes: 4