forgeplus-react/node_modules/rsuite-table/es/Cell.js

210 lines
7.4 KiB
JavaScript

import _extends from "@babel/runtime/helpers/esm/extends";
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
import * as React from 'react';
import PropTypes from 'prop-types';
import classNames from 'classnames';
import { LAYER_WIDTH } from './constants';
import { isNullOrUndefined, defaultClassPrefix, getUnhandledProps, prefix } from './utils';
import TableContext from './TableContext';
import Column from './Column';
export var propTypes = {
align: PropTypes.oneOf(['left', 'center', 'right']),
verticalAlign: PropTypes.oneOf(['top', 'middle', 'bottom']),
className: PropTypes.string,
classPrefix: PropTypes.string,
dataKey: PropTypes.string,
isHeaderCell: PropTypes.bool,
width: PropTypes.number,
height: PropTypes.oneOfType([PropTypes.number, PropTypes.func]),
left: PropTypes.number,
headerHeight: PropTypes.number,
style: PropTypes.object,
firstColumn: PropTypes.bool,
lastColumn: PropTypes.bool,
hasChildren: PropTypes.bool,
children: PropTypes.any,
rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
rowIndex: PropTypes.number,
rowData: PropTypes.object,
depth: PropTypes.number,
onTreeToggle: PropTypes.func,
renderTreeToggle: PropTypes.func,
renderCell: PropTypes.func,
wordWrap: PropTypes.bool,
removed: PropTypes.bool,
treeCol: PropTypes.bool,
expanded: PropTypes.bool,
groupHeader: PropTypes.node,
groupCount: PropTypes.number
};
var Cell = /*#__PURE__*/function (_React$PureComponent) {
_inheritsLoose(Cell, _React$PureComponent);
function Cell() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _React$PureComponent.call.apply(_React$PureComponent, [this].concat(args)) || this;
_this.addPrefix = function (name) {
return prefix(_this.props.classPrefix)(name);
};
_this.handleExpandClick = function (event) {
var _this$props$onTreeTog, _this$props2;
var _this$props = _this.props,
rowKey = _this$props.rowKey,
rowIndex = _this$props.rowIndex,
rowData = _this$props.rowData;
(_this$props$onTreeTog = (_this$props2 = _this.props).onTreeToggle) === null || _this$props$onTreeTog === void 0 ? void 0 : _this$props$onTreeTog.call(_this$props2, rowKey, rowIndex, rowData, event);
};
return _this;
}
var _proto = Cell.prototype;
_proto.isTreeCol = function isTreeCol() {
var _this$props3 = this.props,
treeCol = _this$props3.treeCol,
firstColumn = _this$props3.firstColumn;
var _this$context = this.context,
hasCustomTreeCol = _this$context.hasCustomTreeCol,
isTree = _this$context.isTree;
if (treeCol) {
return true;
}
if (!hasCustomTreeCol && firstColumn && isTree) {
return true;
}
return false;
};
_proto.getHeight = function getHeight() {
var _this$props4 = this.props,
height = _this$props4.height,
rowData = _this$props4.rowData;
return typeof height === 'function' ? height(rowData) : height;
};
_proto.renderTreeNodeExpandIcon = function renderTreeNodeExpandIcon() {
var _this$props5 = this.props,
rowData = _this$props5.rowData,
renderTreeToggle = _this$props5.renderTreeToggle,
hasChildren = _this$props5.hasChildren,
expanded = _this$props5.expanded;
var expandButton = /*#__PURE__*/React.createElement("i", {
className: this.addPrefix('expand-icon')
});
if (this.isTreeCol() && hasChildren) {
return /*#__PURE__*/React.createElement("span", {
role: "button",
tabIndex: -1,
className: this.addPrefix('expand-wrapper'),
onClick: this.handleExpandClick
}, renderTreeToggle ? renderTreeToggle(expandButton, rowData, expanded) : expandButton);
}
return null;
};
_proto.render = function render() {
var _classNames, _extends2, _contentStyles;
var _this$props6 = this.props,
width = _this$props6.width,
left = _this$props6.left,
style = _this$props6.style,
className = _this$props6.className,
firstColumn = _this$props6.firstColumn,
lastColumn = _this$props6.lastColumn,
isHeaderCell = _this$props6.isHeaderCell,
headerHeight = _this$props6.headerHeight,
align = _this$props6.align,
children = _this$props6.children,
rowData = _this$props6.rowData,
dataKey = _this$props6.dataKey,
rowIndex = _this$props6.rowIndex,
renderCell = _this$props6.renderCell,
removed = _this$props6.removed,
wordWrap = _this$props6.wordWrap,
classPrefix = _this$props6.classPrefix,
depth = _this$props6.depth,
verticalAlign = _this$props6.verticalAlign,
expanded = _this$props6.expanded,
onClick = _this$props6.onClick,
rest = _objectWithoutPropertiesLoose(_this$props6, ["width", "left", "style", "className", "firstColumn", "lastColumn", "isHeaderCell", "headerHeight", "align", "children", "rowData", "dataKey", "rowIndex", "renderCell", "removed", "wordWrap", "classPrefix", "depth", "verticalAlign", "expanded", "onClick"]);
if (removed) {
return null;
}
var classes = classNames(classPrefix, className, (_classNames = {}, _classNames[this.addPrefix('expanded')] = expanded && this.isTreeCol(), _classNames[this.addPrefix('first')] = firstColumn, _classNames[this.addPrefix('last')] = lastColumn, _classNames));
var rtl = this.context.rtl;
var nextHeight = isHeaderCell ? headerHeight : this.getHeight();
var styles = _extends({}, style, (_extends2 = {
width: width,
height: nextHeight,
zIndex: depth
}, _extends2[rtl ? 'right' : 'left'] = left, _extends2));
var contentStyles = (_contentStyles = {
width: width,
height: nextHeight,
textAlign: align
}, _contentStyles[rtl ? 'paddingRight' : 'paddingLeft'] = this.isTreeCol() ? depth * LAYER_WIDTH + 10 : null, _contentStyles);
if (verticalAlign) {
contentStyles.display = 'table-cell';
contentStyles.verticalAlign = verticalAlign;
}
var cellContent = isNullOrUndefined(children) && rowData ? rowData[dataKey] : children;
if (typeof children === 'function') {
var getChildren = children;
cellContent = getChildren(rowData, rowIndex);
}
var unhandledProps = getUnhandledProps(propTypes, getUnhandledProps(Column.propTypes, rest));
var cell = renderCell ? renderCell(cellContent) : cellContent;
var content = wordWrap ? /*#__PURE__*/React.createElement("div", {
className: this.addPrefix('wrap')
}, this.renderTreeNodeExpandIcon(), cell) : /*#__PURE__*/React.createElement(React.Fragment, null, this.renderTreeNodeExpandIcon(), cell);
return /*#__PURE__*/React.createElement("div", _extends({
role: isHeaderCell ? 'columnheader' : 'gridcell'
}, unhandledProps, {
onClick: onClick,
className: classes,
style: styles
}), /*#__PURE__*/React.createElement("div", {
className: this.addPrefix('content'),
style: contentStyles
}, content));
};
return Cell;
}(React.PureComponent);
Cell.contextType = TableContext;
Cell.propTypes = propTypes;
Cell.defaultProps = {
classPrefix: defaultClassPrefix('table-cell'),
headerHeight: 36,
depth: 0,
height: 36,
width: 0,
left: 0
};
export default Cell;