UNPKG

8.46 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4exports.default = undefined;
5
6var _extends2 = require('babel-runtime/helpers/extends');
7
8var _extends3 = _interopRequireDefault(_extends2);
9
10var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
11
12var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
13
14var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
15
16var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
17
18var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
19
20var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
21
22var _inherits2 = require('babel-runtime/helpers/inherits');
23
24var _inherits3 = _interopRequireDefault(_inherits2);
25
26var _class, _temp2;
27
28var _react = require('react');
29
30var _react2 = _interopRequireDefault(_react);
31
32var _propTypes = require('prop-types');
33
34var _propTypes2 = _interopRequireDefault(_propTypes);
35
36var _util = require('../../util');
37
38var _row = require('../lock/row');
39
40var _row2 = _interopRequireDefault(_row);
41
42function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
44var ExpandedRow = (_temp2 = _class = function (_React$Component) {
45 (0, _inherits3.default)(ExpandedRow, _React$Component);
46
47 function ExpandedRow() {
48 var _temp, _this, _ret;
49
50 (0, _classCallCheck3.default)(this, ExpandedRow);
51
52 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
53 args[_key] = arguments[_key];
54 }
55
56 return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args))), _this), _this.getExpandedRow = function (parentKey, ref) {
57 var getExpandedRowRef = _this.context.getExpandedRowRef;
58
59 getExpandedRowRef && getExpandedRowRef(parentKey, ref);
60 }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
61 }
62
63 ExpandedRow.prototype.renderExpandedRow = function renderExpandedRow(record, rowIndex) {
64 var _context = this.context,
65 expandedRowRender = _context.expandedRowRender,
66 expandedRowIndent = _context.expandedRowIndent,
67 openRowKeys = _context.openRowKeys,
68 lockType = _context.lockType,
69 expandedIndexSimulate = _context.expandedIndexSimulate,
70 expandedRowWidthEquals2Table = _context.expandedRowWidthEquals2Table;
71
72 var expandedIndex = expandedIndexSimulate ? (rowIndex - 1) / 2 : rowIndex;
73
74 var _props = this.props,
75 columns = _props.columns,
76 cellRef = _props.cellRef;
77
78 var colSpan = columns.length;
79 var expandedCols = columns[0] && columns[0].__colIndex || 0;
80
81 if (expandedRowRender) {
82 var _props2 = this.props,
83 primaryKey = _props2.primaryKey,
84 prefix = _props2.prefix,
85 leftIndent = expandedRowIndent[0],
86 rightIndent = expandedRowIndent[1],
87 totalIndent = leftIndent + rightIndent,
88 renderCols = function renderCols(number) {
89 var start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
90
91 var ret = [];
92
93 var _loop = function _loop(i) {
94 ret.push(_react2.default.createElement(
95 'td',
96 { key: i, ref: function ref(cell) {
97 return cellRef(rowIndex, i + start, cell);
98 } },
99 '\xA0'
100 ));
101 };
102
103 for (var i = 0; i < number; i++) {
104 _loop(i);
105 }
106 return ret;
107 };
108
109 var content = void 0;
110
111 if (totalIndent > colSpan && !lockType) {
112 _util.log.warning("It's not allowed expandedRowIndent is more than the number of columns.");
113 }
114 if (leftIndent < columns.length && lockType === 'left') {
115 _util.log.warning('expandedRowIndent left is less than the number of left lock columns.');
116 }
117 if (rightIndent < columns.length && lockType === 'right') {
118 _util.log.warning('expandedRowIndent right is less than the number of right lock columns.');
119 }
120 if (lockType) {
121 return openRowKeys.indexOf(record[primaryKey]) > -1 ? _react2.default.createElement(
122 'tr',
123 { className: prefix + 'table-expanded-row', key: 'expanded-' + expandedIndex },
124 _react2.default.createElement(
125 'td',
126 { colSpan: colSpan, ref: function ref(cell) {
127 return cellRef(rowIndex, expandedCols, cell);
128 } },
129 '\xA0'
130 )
131 ) : null;
132 }
133
134 var expandedRowStyle = {
135 position: 'sticky',
136 left: 0
137 };
138 // 暴露给用户的index
139 content = expandedRowRender(record, expandedIndex);
140 if (!_react2.default.isValidElement(content)) {
141 content = _react2.default.createElement(
142 'div',
143 {
144 className: prefix + 'table-cell-wrapper',
145 ref: this.getExpandedRow.bind(this, record[primaryKey]),
146 style: expandedRowWidthEquals2Table && expandedRowStyle
147 },
148 content
149 );
150 } else {
151 content = expandedRowWidthEquals2Table ? _react2.default.createElement(
152 'div',
153 {
154 className: prefix + 'table-expanded-area',
155 ref: this.getExpandedRow.bind(this, record[primaryKey]),
156 style: expandedRowStyle
157 },
158 content
159 ) : content;
160 }
161
162 var rightStart = columns.length;
163 columns.forEach(function (col) {
164 col.lock === 'right' && rightStart--;
165 });
166 return openRowKeys.indexOf(record[primaryKey]) > -1 ? _react2.default.createElement(
167 'tr',
168 { className: prefix + 'table-expanded-row', key: 'expanded-' + (record[primaryKey] || expandedIndex) },
169 renderCols(leftIndent),
170 _react2.default.createElement(
171 'td',
172 { colSpan: colSpan - totalIndent },
173 content
174 ),
175 renderCols(rightIndent, rightStart)
176 ) : null;
177 } else {
178 return null;
179 }
180 };
181
182 ExpandedRow.prototype.render = function render() {
183 /* eslint-disable no-unused-vars*/
184 var _props3 = this.props,
185 record = _props3.record,
186 rowIndex = _props3.rowIndex,
187 columns = _props3.columns,
188 others = (0, _objectWithoutProperties3.default)(_props3, ['record', 'rowIndex', 'columns']);
189 var expandedIndexSimulate = this.context.expandedIndexSimulate;
190
191
192 if (record.__expanded) {
193 return this.renderExpandedRow(record, rowIndex, columns);
194 }
195
196 var newRowIndex = expandedIndexSimulate ? rowIndex / 2 : rowIndex;
197 return _react2.default.createElement(_row2.default, (0, _extends3.default)({}, others, { record: record, columns: columns, __rowIndex: rowIndex, rowIndex: newRowIndex }));
198 };
199
200 return ExpandedRow;
201}(_react2.default.Component), _class.propTypes = (0, _extends3.default)({}, _row2.default.propTypes), _class.defaultProps = (0, _extends3.default)({}, _row2.default.defaultProps), _class.contextTypes = {
202 openRowKeys: _propTypes2.default.array,
203 expandedRowRender: _propTypes2.default.func,
204 expandedRowIndent: _propTypes2.default.array,
205 expandedIndexSimulate: _propTypes2.default.bool,
206 expandedRowWidthEquals2Table: _propTypes2.default.bool,
207 lockType: _propTypes2.default.oneOf(['left', 'right']),
208 getExpandedRowRef: _propTypes2.default.func
209}, _temp2);
210ExpandedRow.displayName = 'ExpandedRow';
211exports.default = ExpandedRow;
212module.exports = exports['default'];
\No newline at end of file