UNPKG

@itwin/itwinui-react

Version:

A react component library for iTwinUI

33 lines (32 loc) 1.03 kB
import * as React from 'react'; export const useSubRowSelection = (hooks) => { hooks.useInstance.push(useInstance); }; let useInstance = (instance) => { let selectedFlatRows = React.useMemo(() => { let selectedFlatRows = []; let setSelectionState = (row, selectedRowIds) => { let isSomeSubRowsSelected = false; row.initialSubRows.forEach((subRow) => { setSelectionState(subRow, selectedRowIds); if (subRow.isSelected || subRow.isSomeSelected) isSomeSubRowsSelected = true; }); if (selectedRowIds[row.id]) { row.isSelected = true; row.isSomeSelected = false; selectedFlatRows.push(row); } else { row.isSelected = false; row.isSomeSelected = isSomeSubRowsSelected; } }; instance.rows.forEach((row) => setSelectionState(row, instance.state.selectedRowIds), ); return selectedFlatRows; }, [instance.rows, instance.state.selectedRowIds]); Object.assign(instance, { selectedFlatRows, }); };