choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
146 lines (115 loc) • 5.3 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _mobxReactLite = require("mobx-react-lite");
var _classnames = _interopRequireDefault(require("classnames"));
var _measureScrollbar = _interopRequireDefault(require("../../../lib/_util/measureScrollbar"));
var _UnitConvertor = require("../../../lib/_util/UnitConvertor");
var _TableContext = _interopRequireDefault(require("./TableContext"));
var _enum = require("./enum");
var _TableEditor = _interopRequireDefault(require("./TableEditor"));
var _TableCol = _interopRequireDefault(require("./TableCol"));
var _utils = require("./utils");
var _treeUtils = require("../_util/treeUtils");
var TableWrapper = function TableWrapper(props) {
var children = props.children,
hasBody = props.hasBody,
lock = props.lock,
hasHeader = props.hasHeader,
hasFooter = props.hasFooter,
columnGroups = props.columnGroups,
getCopyBodyRef = props.getCopyBodyRef;
var _useContext = (0, _react.useContext)(_TableContext["default"]),
prefixCls = _useContext.prefixCls,
summary = _useContext.summary,
tableStore = _useContext.tableStore,
fullColumnWidth = _useContext.fullColumnWidth;
var leafs = columnGroups.leafs,
width = columnGroups.width;
var overflowX = tableStore.overflowX,
customizable = tableStore.customizable,
rowDraggable = tableStore.rowDraggable,
dragColumnAlign = tableStore.dragColumnAlign,
clipboard = tableStore.clipboard;
var hasPlaceHolder = lock !== _enum.ColumnLock.left && (hasHeader || hasFooter) && tableStore.overflowY;
var tableWidth = overflowX ? lock !== _enum.ColumnLock.left && !hasBody && tableStore.overflowY ? (0, _UnitConvertor.pxToRem)(width + (0, _measureScrollbar["default"])(), true) : (0, _UnitConvertor.pxToRem)(width, true) : '100%';
var editorKeys = new Set();
var editors = (0, _react.useMemo)(function () {
return hasBody ? (0, _treeUtils.treeReduce)(leafs.map(function (_ref) {
var column = _ref.column;
return column;
}), function (nodes, column) {
var editor = column.editor,
name = column.name;
if (editor && name && (lock || (0, _utils.isStickySupport)() || !column.lock || !overflowX)) {
var key = (0, _utils.getColumnKey)(column);
if (!editorKeys.has(key)) {
editorKeys.add(key);
nodes.push( /*#__PURE__*/_react["default"].createElement(_TableEditor["default"], {
key: key,
column: column
}));
}
}
return nodes;
}, []) : undefined;
}, [leafs, overflowX, lock, hasBody]);
var colGroup = (0, _react.useMemo)(function () {
var fixedColumnLength = 1;
if (customizable) {
fixedColumnLength += 1;
}
if (rowDraggable && dragColumnAlign === _enum.DragColumnAlign.right) {
fixedColumnLength += 1;
}
var cols = leafs.map(function (_ref2, index, array) {
var column = _ref2.column,
key = _ref2.key;
return /*#__PURE__*/_react["default"].createElement(_TableCol["default"], {
key: key,
column: column,
last: fullColumnWidth && index === array.length - fixedColumnLength
});
});
if (!fullColumnWidth && lock !== _enum.ColumnLock.left && !overflowX && !tableStore.hasEmptyWidthColumn) {
cols.push( /*#__PURE__*/_react["default"].createElement("col", {
key: "empty-column"
}));
}
if (hasPlaceHolder) {
cols.push( /*#__PURE__*/_react["default"].createElement("col", {
key: "fixed-column",
style: {
width: (0, _UnitConvertor.pxToRem)((0, _measureScrollbar["default"])(), true)
}
}));
}
return /*#__PURE__*/_react["default"].createElement("colgroup", null, cols);
}, [leafs, customizable, rowDraggable, dragColumnAlign, hasPlaceHolder, lock, fullColumnWidth]);
var style = (0, _react.useMemo)(function () {
return {
width: tableWidth
};
}, [tableWidth]);
var className = (0, _classnames["default"])((0, _defineProperty2["default"])({}, "".concat(prefixCls, "-last-row-bordered"), hasBody && !tableStore.overflowY && (tableStore.height !== undefined || !tableStore.hasFooter && overflowX)));
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("table", {
key: "table",
className: className,
style: style,
summary: hasBody ? summary : undefined
}, colGroup, children), clipboard && /*#__PURE__*/_react["default"].createElement("div", {
ref: getCopyBodyRef,
className: "".concat(prefixCls, "-range-border"),
hidden: !!tableStore.currentEditorName
}), editors);
};
TableWrapper.displayName = 'TableWrapper';
var _default = (0, _mobxReactLite.observer)(TableWrapper);
exports["default"] = _default;
//# sourceMappingURL=TableWrapper.js.map
;