@itwin/itwinui-react
Version:
A react component library for iTwinUI
152 lines (151 loc) • 4.18 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', {
value: true,
});
Object.defineProperty(exports, 'TableCell', {
enumerable: true,
get: function () {
return TableCell;
},
});
const _interop_require_default = require('@swc/helpers/_/_interop_require_default');
const _interop_require_wildcard = require('@swc/helpers/_/_interop_require_wildcard');
const _react = /*#__PURE__*/ _interop_require_wildcard._(require('react'));
const _classnames = /*#__PURE__*/ _interop_require_default._(
require('classnames'),
);
const _utils = require('./utils.js');
const _SubRowExpander = require('./SubRowExpander.js');
const _index = require('./columns/index.js');
const _index1 = require('./cells/index.js');
const _index2 = require('../../utils/index.js');
const _DefaultCell = require('./cells/DefaultCell.js');
const TableCell = (props) => {
let {
cell,
cellIndex,
isDisabled,
tableHasSubRows,
tableInstance,
expanderCell,
density,
} = props;
let hasSubRowExpander =
cellIndex ===
cell.row.cells.findIndex((c) => c.column.id !== _index.SELECTION_CELL_ID);
let cellElementProps = cell.getCellProps({
className: (0, _classnames.default)(
'iui-table-cell',
cell.column.cellClassName,
{
'iui-table-cell-sticky': !!cell.column.sticky,
},
),
style: {
...(0, _utils.getCellStyle)(
cell.column,
!!tableInstance.state.isTableResizing,
),
...(tableHasSubRows &&
hasSubRowExpander &&
(0, _utils.getSubRowStyle)({
density,
depth: cell.row.depth + (cell.row.canExpand ? 0 : 1),
})),
...(0, _utils.getStickyStyle)(cell.column, tableInstance.visibleColumns),
},
});
let cellProps = _react.useMemo(
() => ({
...tableInstance,
...{
cell,
row: cell.row,
value: cell.value,
column: cell.column,
},
}),
[cell, tableInstance],
);
let cellContent = _react.useMemo(
() =>
_react.createElement(
_react.Fragment,
null,
tableHasSubRows &&
hasSubRowExpander &&
cell.row.canExpand &&
_react.createElement(_SubRowExpander.SubRowExpander, {
cell: cell,
isDisabled: isDisabled,
cellProps: cellProps,
expanderCell: expanderCell,
density: density,
slot: 'start',
}),
cell.render('Cell'),
),
[
cell,
cellProps,
density,
expanderCell,
hasSubRowExpander,
isDisabled,
tableHasSubRows,
],
);
let defaultCellRendererChildren = _react.useMemo(
() =>
_react.createElement(
_react.Fragment,
null,
cellContent,
'left' === cell.column.sticky &&
tableInstance.state.sticky.isScrolledToRight &&
_react.createElement(_index2.Box, {
className: 'iui-table-cell-shadow-right',
slot: 'shadows',
}),
'right' === cell.column.sticky &&
tableInstance.state.sticky.isScrolledToLeft &&
_react.createElement(_index2.Box, {
className: 'iui-table-cell-shadow-left',
slot: 'shadows',
}),
),
[
cell.column.sticky,
cellContent,
tableInstance.state.sticky.isScrolledToLeft,
tableInstance.state.sticky.isScrolledToRight,
],
);
let cellRendererProps = _react.useMemo(
() => ({
cellElementProps,
cellProps,
children: defaultCellRendererChildren,
}),
[cellElementProps, cellProps, defaultCellRendererChildren],
);
return _react.createElement(
_react.Fragment,
null,
_react.createElement(
_DefaultCell.DefaultCellRendererPropsChildren.Provider,
{
value: defaultCellRendererChildren,
},
cell.column.cellRenderer
? cell.column.cellRenderer({
...cellRendererProps,
isDisabled: () => isDisabled,
})
: _react.createElement(_index1.DefaultCell, {
...cellRendererProps,
isDisabled: () => isDisabled,
}),
),
);
};