@itwin/itwinui-react
Version:
A react component library for iTwinUI
44 lines (43 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'useSubRowSelection', {
enumerable: true,
get: function () {
return useSubRowSelection;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const useSubRowSelection = (hooks) => {
hooks.useInstance.push(useInstance);
};
const 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,
});
};