choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
94 lines (83 loc) • 3.19 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import React, { useCallback, useContext } from 'react';
import { observer } from 'mobx-react-lite';
import classNames from 'classnames';
import { pxToRem } from '../../../es/_util/UnitConvertor';
import { defaultAggregationRenderer } from './Column';
import TableContext from './TableContext';
import ExpandIcon from './ExpandIcon';
var TableGroupCellInner = function TableGroupCellInner(props) {
var _useContext = useContext(TableContext),
dataSet = _useContext.dataSet,
rowHeight = _useContext.rowHeight,
indentSize = _useContext.indentSize,
tableStore = _useContext.tableStore,
prefixCls = _useContext.prefixCls;
var column = props.column,
group = props.group,
aggregationList = props.children,
rowSpan = props.rowSpan,
isFixedRowHeight = props.isFixedRowHeight;
var children = group.children;
var _column$renderer = column.renderer,
renderer = _column$renderer === void 0 ? defaultAggregationRenderer : _column$renderer,
__tableGroup = column.__tableGroup;
var handleExpandChange = useCallback(function () {
tableStore.setGroupExpanded(group, !tableStore.isGroupExpanded(group));
}, [tableStore, group]);
var record = group.totalRecords[0];
var text = renderer({
text: aggregationList || group.value,
rowGroup: group,
dataSet: dataSet,
record: record
});
var hasExpandIcon = Boolean(__tableGroup && __tableGroup.parentField);
var renderExpandIcon = function renderExpandIcon() {
if (hasExpandIcon) {
var expandable = !!children;
var expandIcon = tableStore.expandIcon;
var isExpanded = tableStore.isGroupExpanded(group);
if (typeof expandIcon === 'function') {
return expandIcon({
prefixCls: prefixCls,
expanded: isExpanded,
expandable: expandable,
needIndentSpaced: false,
record: record,
onExpand: handleExpandChange
});
}
return /*#__PURE__*/React.createElement(ExpandIcon, {
prefixCls: prefixCls,
expandable: expandable,
onChange: handleExpandChange,
expanded: isExpanded
});
}
};
var renderIndent = function renderIndent() {
if (hasExpandIcon) {
return /*#__PURE__*/React.createElement("span", {
key: "indent",
style: {
paddingLeft: pxToRem(indentSize * group.level)
}
});
}
};
var cellProps = {
className: classNames("".concat(prefixCls, "-cell-inner"), _defineProperty({}, "".concat(prefixCls, "-cell-inner-row-height-fixed"), rowHeight !== 'auto'))
};
if (rowSpan === undefined && isFixedRowHeight && rowHeight !== 'auto') {
cellProps.style = {
height: pxToRem(rowHeight),
lineHeight: pxToRem(rowHeight - 2)
};
}
return /*#__PURE__*/React.createElement("span", _extends({}, cellProps), renderIndent(), renderExpandIcon(), text);
};
TableGroupCellInner.displayName = 'TableGroupCellInner';
export default observer(TableGroupCellInner);
//# sourceMappingURL=TableGroupCellInner.js.map