UNPKG

shineout

Version:

Shein 前端组件库

234 lines (190 loc) 8.11 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = exports.CLASS_FIXED_RIGHT = exports.CLASS_FIXED_LEFT = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _styles = require("./styles"); var _Checkbox = _interopRequireDefault(require("./Checkbox")); var _translate = require("../utils/dom/translate"); var CLASS_FIXED_LEFT = 'fixed-left'; exports.CLASS_FIXED_LEFT = CLASS_FIXED_LEFT; var CLASS_FIXED_RIGHT = 'fixed-right'; exports.CLASS_FIXED_RIGHT = CLASS_FIXED_RIGHT; var DefaultProps = { fixed: '', style: {}, align: 'left' }; var Td = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(Td, _PureComponent); function Td(props) { var _this; _this = _PureComponent.call(this, props) || this; (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "cachedRender", void 0); _this.handleExpandClick = _this.handleExpandClick.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleTreeExpand = _this.handleTreeExpand.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); return _this; } var _proto = Td.prototype; _proto.handleExpandClick = function handleExpandClick() { var _this$props = this.props, originKey = _this$props.originKey, expanded = _this$props.expanded, data = _this$props.data, expandKeys = _this$props.expandKeys, expandClick = _this$props.expandClick, resetFixAuto = _this$props.resetFixAuto; if (expandKeys) { if (expandClick) expandClick(data, !expanded); } else { this.props.onExpand(originKey, expanded ? undefined : this.cachedRender); } resetFixAuto(true); }; _proto.handleTreeExpand = function handleTreeExpand() { var _this$props2 = this.props, data = _this$props2.data, onTreeExpand = _this$props2.onTreeExpand, index = _this$props2.index; onTreeExpand(data, index); }; _proto.renderCheckbox = function renderCheckbox() { var _this$props3 = this.props, index = _this$props3.index, data = _this$props3.data, datum = _this$props3.datum, treeColumnsName = _this$props3.treeColumnsName, treeCheckAll = _this$props3.treeCheckAll, disabled = _this$props3.disabled, render = _this$props3.render; var checkbox = _react.default.createElement(_Checkbox.default, { force: datum.check(data), data: data, index: index, datum: datum, disabled: disabled, treeColumnsName: treeCheckAll ? treeColumnsName : undefined }); if (render && typeof render === 'function') { return render(data, index, checkbox); } return checkbox; }; _proto.renderExpand = function renderExpand(index) { var _this$props4 = this.props, expanded = _this$props4.expanded, render = _this$props4.render, data = _this$props4.data; if (typeof render !== 'function') return null; var _cachedRender = render(data, index); if (!_cachedRender) return null; if (typeof _cachedRender !== 'function') { _cachedRender = function cachedRender() { return _cachedRender; }; } this.cachedRender = _cachedRender; return _react.default.createElement("span", { className: (0, _styles.tableClass)('expand-indicator', "icon-expand-" + (expanded ? 'sub' : 'plus')), onClick: this.handleExpandClick }); }; _proto.renderTreeExpand = function renderTreeExpand(content) { var _this$props5 = this.props, data = _this$props5.data, treeRoot = _this$props5.treeRoot, treeColumnsName = _this$props5.treeColumnsName, treeExpand = _this$props5.treeExpand, originKey = _this$props5.originKey, treeExpandLevel = _this$props5.treeExpandLevel, treeIndent = _this$props5.treeIndent, treeEmptyExpand = _this$props5.treeEmptyExpand; var level = treeExpandLevel.get(originKey) || 0; var className = (0, _styles.tableClass)('expand-wrapped'); if (!treeColumnsName || !data[treeColumnsName] || data[treeColumnsName].length === 0 && !treeEmptyExpand) { return _react.default.createElement("span", { className: className, style: { marginLeft: level * treeIndent, paddingLeft: treeRoot ? 0 : 25 } }, content); } return _react.default.createElement("span", { className: className, style: { marginLeft: level * treeIndent } }, _react.default.createElement("span", { key: "expand-icon", onClick: this.handleTreeExpand, className: (0, _styles.tableClass)('icon-tree-expand', "icon-tree-" + (treeExpand ? 'sub' : 'plus')) }), content); }; _proto.renderResult = function renderResult() { var _this$props6 = this.props, render = _this$props6.render, data = _this$props6.data, index = _this$props6.index, treeColumnsName = _this$props6.treeColumnsName, treeExpandShow = _this$props6.treeExpandShow; var content = typeof render === 'function' ? render(data, index) : data[render]; if (!treeColumnsName || !treeExpandShow) return content; return this.renderTreeExpand(content); }; _proto.renderContent = function renderContent() { var _this$props7 = this.props, type = _this$props7.type, index = _this$props7.index; switch (type) { case 'checkbox': return this.renderCheckbox(); case 'expand': case 'row-expand': return this.renderExpand(index); default: return this.renderResult(); } }; _proto.render = function render() { var _this$props8 = this.props, rowSpan = _this$props8.rowSpan, colSpan = _this$props8.colSpan, fixed = _this$props8.fixed, _this$props8$style = _this$props8.style, style = _this$props8$style === void 0 ? {} : _this$props8$style, firstFixed = _this$props8.firstFixed, lastFixed = _this$props8.lastFixed, type = _this$props8.type, align = _this$props8.align, ignoreBorderRight = _this$props8.ignoreBorderRight, offsetLeft = _this$props8.offsetLeft, offsetRight = _this$props8.offsetRight; var className = (0, _classnames.default)(this.props.className, (0, _styles.tableClass)(fixed === 'left' && CLASS_FIXED_LEFT, fixed === 'right' && CLASS_FIXED_RIGHT, firstFixed && 'fixed-first', lastFixed && 'fixed-last', (type === 'checkbox' || type === 'expand' || type === 'row-expand') && 'checkbox', align !== 'left' && "align-" + align, ignoreBorderRight && 'ignore-right-border')); var newStyle = (0, _objectSpread2.default)({}, style); if (fixed === 'left' && offsetLeft) { newStyle.transform = "translateX(" + (0, _translate.getDirectionX)(offsetLeft + "px") + ")"; } if (fixed === 'right' && offsetRight) { newStyle.transform = "translateX(" + (0, _translate.getDirectionX)("-" + offsetRight + "px") + ")"; } return _react.default.createElement("td", { style: newStyle, className: className, rowSpan: rowSpan, colSpan: colSpan }, this.renderContent()); }; return Td; }(_react.PureComponent); (0, _defineProperty2.default)(Td, "defaultProps", DefaultProps); var _default = Td; exports.default = _default;