shineout
Version:
Shein 前端组件库
234 lines (190 loc) • 8.11 kB
JavaScript
"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;