UNPKG

@alifd/next

Version:

A configurable component library for web built on React.

212 lines (169 loc) 8.46 kB
'use strict'; exports.__esModule = true; exports.default = undefined; var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _class, _temp2; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _util = require('../../util'); var _row = require('../lock/row'); var _row2 = _interopRequireDefault(_row); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var ExpandedRow = (_temp2 = _class = function (_React$Component) { (0, _inherits3.default)(ExpandedRow, _React$Component); function ExpandedRow() { var _temp, _this, _ret; (0, _classCallCheck3.default)(this, ExpandedRow); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.getExpandedRow = function (parentKey, ref) { var getExpandedRowRef = _this.context.getExpandedRowRef; getExpandedRowRef && getExpandedRowRef(parentKey, ref); }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret); } ExpandedRow.prototype.renderExpandedRow = function renderExpandedRow(record, rowIndex) { var _context = this.context, expandedRowRender = _context.expandedRowRender, expandedRowIndent = _context.expandedRowIndent, openRowKeys = _context.openRowKeys, lockType = _context.lockType, expandedIndexSimulate = _context.expandedIndexSimulate, expandedRowWidthEquals2Table = _context.expandedRowWidthEquals2Table; var expandedIndex = expandedIndexSimulate ? (rowIndex - 1) / 2 : rowIndex; var _props = this.props, columns = _props.columns, cellRef = _props.cellRef; var colSpan = columns.length; var expandedCols = columns[0] && columns[0].__colIndex || 0; if (expandedRowRender) { var _props2 = this.props, primaryKey = _props2.primaryKey, prefix = _props2.prefix, leftIndent = expandedRowIndent[0], rightIndent = expandedRowIndent[1], totalIndent = leftIndent + rightIndent, renderCols = function renderCols(number) { var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var ret = []; var _loop = function _loop(i) { ret.push(_react2.default.createElement( 'td', { key: i, ref: function ref(cell) { return cellRef(rowIndex, i + start, cell); } }, '\xA0' )); }; for (var i = 0; i < number; i++) { _loop(i); } return ret; }; var content = void 0; if (totalIndent > colSpan && !lockType) { _util.log.warning("It's not allowed expandedRowIndent is more than the number of columns."); } if (leftIndent < columns.length && lockType === 'left') { _util.log.warning('expandedRowIndent left is less than the number of left lock columns.'); } if (rightIndent < columns.length && lockType === 'right') { _util.log.warning('expandedRowIndent right is less than the number of right lock columns.'); } if (lockType) { return openRowKeys.indexOf(record[primaryKey]) > -1 ? _react2.default.createElement( 'tr', { className: prefix + 'table-expanded-row', key: 'expanded-' + expandedIndex }, _react2.default.createElement( 'td', { colSpan: colSpan, ref: function ref(cell) { return cellRef(rowIndex, expandedCols, cell); } }, '\xA0' ) ) : null; } var expandedRowStyle = { position: 'sticky', left: 0 }; // 暴露给用户的index content = expandedRowRender(record, expandedIndex); if (!_react2.default.isValidElement(content)) { content = _react2.default.createElement( 'div', { className: prefix + 'table-cell-wrapper', ref: this.getExpandedRow.bind(this, record[primaryKey]), style: expandedRowWidthEquals2Table && expandedRowStyle }, content ); } else { content = expandedRowWidthEquals2Table ? _react2.default.createElement( 'div', { className: prefix + 'table-expanded-area', ref: this.getExpandedRow.bind(this, record[primaryKey]), style: expandedRowStyle }, content ) : content; } var rightStart = columns.length; columns.forEach(function (col) { col.lock === 'right' && rightStart--; }); return openRowKeys.indexOf(record[primaryKey]) > -1 ? _react2.default.createElement( 'tr', { className: prefix + 'table-expanded-row', key: 'expanded-' + (record[primaryKey] || expandedIndex) }, renderCols(leftIndent), _react2.default.createElement( 'td', { colSpan: colSpan - totalIndent }, content ), renderCols(rightIndent, rightStart) ) : null; } else { return null; } }; ExpandedRow.prototype.render = function render() { /* eslint-disable no-unused-vars*/ var _props3 = this.props, record = _props3.record, rowIndex = _props3.rowIndex, columns = _props3.columns, others = (0, _objectWithoutProperties3.default)(_props3, ['record', 'rowIndex', 'columns']); var expandedIndexSimulate = this.context.expandedIndexSimulate; if (record.__expanded) { return this.renderExpandedRow(record, rowIndex, columns); } var newRowIndex = expandedIndexSimulate ? rowIndex / 2 : rowIndex; return _react2.default.createElement(_row2.default, (0, _extends3.default)({}, others, { record: record, columns: columns, __rowIndex: rowIndex, rowIndex: newRowIndex })); }; return ExpandedRow; }(_react2.default.Component), _class.propTypes = (0, _extends3.default)({}, _row2.default.propTypes), _class.defaultProps = (0, _extends3.default)({}, _row2.default.defaultProps), _class.contextTypes = { openRowKeys: _propTypes2.default.array, expandedRowRender: _propTypes2.default.func, expandedRowIndent: _propTypes2.default.array, expandedIndexSimulate: _propTypes2.default.bool, expandedRowWidthEquals2Table: _propTypes2.default.bool, lockType: _propTypes2.default.oneOf(['left', 'right']), getExpandedRowRef: _propTypes2.default.func }, _temp2); ExpandedRow.displayName = 'ExpandedRow'; exports.default = ExpandedRow; module.exports = exports['default'];