@itwin/itwinui-react
Version:
A react component library for iTwinUI
98 lines (97 loc) • 3.17 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
function _export(target, all) {
for (var name in all)
Object.defineProperty(target, name, {
enumerable: true,
get: all[name],
});
}
_export(exports, {
SELECTION_CELL_ID: function () {
return SELECTION_CELL_ID;
},
SelectionColumn: function () {
return SelectionColumn;
},
});
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _Checkbox = require('../../Checkbox/Checkbox.js');
const _index = require('../cells/index.js');
const _Table = require('../Table.js');
const SELECTION_CELL_ID = 'iui-table-checkbox-selector';
const SelectionColumn = (props = {}) => {
let { isDisabled, density } = props;
let densityWidth =
'condensed' === density ? 42 : 'extra-condensed' === density ? 34 : 48;
return {
id: SELECTION_CELL_ID,
disableResizing: true,
disableGroupBy: true,
disableReordering: true,
minWidth: densityWidth,
width: densityWidth,
maxWidth: densityWidth,
columnClassName: 'iui-slot',
cellClassName: 'iui-slot',
Header: ({
getToggleAllRowsSelectedProps,
toggleAllRowsSelected,
rows,
preFilteredFlatRows,
state,
}) => {
let disabled = preFilteredFlatRows.every((row) =>
isDisabled?.(row.original),
);
let checked = preFilteredFlatRows.every(
(row) => state.selectedRowIds[row.id] || isDisabled?.(row.original),
);
let indeterminate =
!checked &&
Object.keys(state.selectedRowIds).length > 0 &&
Object.values(state.selectedRowIds).some((v) => true === v);
let nextToggleState = !rows.some((row) => row.isSelected);
return _react.createElement(_Checkbox.Checkbox, {
...getToggleAllRowsSelectedProps(),
style: {},
title: '',
checked: checked && !disabled,
indeterminate: indeterminate,
disabled: disabled,
'aria-label': `${nextToggleState ? 'Select' : 'Deselect'} all rows`,
onChange: () => toggleAllRowsSelected(nextToggleState),
});
},
Cell: ({ row, selectSubRows = true }) =>
_react.createElement(_Checkbox.Checkbox, {
...row.getToggleRowSelectedProps(),
style: {},
title: '',
disabled: isDisabled?.(row.original),
onClick: (e) => e.stopPropagation(),
'aria-label': `${row.isSelected ? 'Deselect' : 'Select'} row`,
onChange: () => {
if (
row.subRows.length > 0 &&
selectSubRows &&
void 0 === row.initialSubRows[0].original[_Table.iuiId]
)
row.toggleRowSelected(
!row.subRows.every(
(subRow) => subRow.isSelected || isDisabled?.(subRow.original),
),
);
else row.toggleRowSelected(!row.isSelected);
},
}),
cellRenderer: (props) =>
_react.createElement(_index.DefaultCell, {
...props,
isDisabled: (rowData) => !!isDisabled?.(rowData),
}),
};
};