UNPKG

dh-c

Version:

The front-end development engineers jimberton gulp react component

166 lines (140 loc) 5.65 kB
'use strict'; exports.__esModule = true; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _checkbox = require('antd/lib/checkbox'); var _checkbox2 = _interopRequireDefault(_checkbox); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var Table = function (_Component) { _inherits(Table, _Component); function Table(props) { _classCallCheck(this, Table); var _this = _possibleConstructorReturn(this, _Component.call(this, props)); _this.state = { selectedIdx: [] }; _this.onClickSelect = _this.onClickSelect.bind(_this); return _this; } Table.prototype.onClickSelectAll = function onClickSelectAll(e) { var _props = this.props, dataSource = _props.dataSource, _props$rowSelection$o = _props.rowSelection.onSelectAll, onSelectAll = _props$rowSelection$o === undefined ? function () {} : _props$rowSelection$o; var checked = e.target.checked; var selectedIdx = []; if (checked) { selectedIdx = dataSource.map(function (d, i) { return i; }); } this.setState({ selectedIdx: selectedIdx }); onSelectAll(checked, checked ? dataSource : []); }; Table.prototype.onClickSelect = function onClickSelect(e, idx) { var _props2 = this.props, dataSource = _props2.dataSource, _props2$rowSelection$ = _props2.rowSelection.onSelect, onSelect = _props2$rowSelection$ === undefined ? function () {} : _props2$rowSelection$; var selectedIdx = this.state.selectedIdx; var p = selectedIdx.indexOf(idx); if (p > -1) { selectedIdx.splice(p, 1); } else { selectedIdx.push(idx); } this.setState({ selectedIdx: selectedIdx }); onSelect(dataSource[idx], e.target.checked, dataSource.filter(function (d, i) { return selectedIdx.indexOf(i) > -1; })); }; Table.prototype.render = function render() { var _this2 = this; var _props3 = this.props, columns = _props3.columns, dataSource = _props3.dataSource, size = _props3.size, bordered = _props3.bordered, striped = _props3.striped, rowSelection = _props3.rowSelection; var selectedIdx = this.state.selectedIdx; return _react2.default.createElement( 'div', { className: 'dh-table dh-table-' + size + ' ' + (bordered ? 'dh-table-bordered' : '') + ' ' + (striped ? 'dh-table-striped' : '') }, _react2.default.createElement( 'table', { cellSpacing: '0' }, _react2.default.createElement( 'thead', null, _react2.default.createElement( 'tr', null, rowSelection && _react2.default.createElement( 'th', null, _react2.default.createElement(_checkbox2.default, { onChange: this.onClickSelectAll.bind(this) }) ), columns.map(function (d) { return _react2.default.createElement( 'th', { key: d.dataIndex, style: { width: d.width || 'auto' } }, d.title ); }) ) ), _react2.default.createElement( 'tbody', null, dataSource.map(function (d, i) { return _react2.default.createElement( 'tr', { key: i }, rowSelection && _react2.default.createElement( 'td', null, _react2.default.createElement(_checkbox2.default, { checked: selectedIdx.indexOf(i) > -1, onChange: function onChange(e) { return _this2.onClickSelect(e, i); } }) ), columns.map(function (c) { return _react2.default.createElement( 'td', { key: c.dataIndex }, c.render ? c.render(d[c.dataIndex], d, i) : d[c.dataIndex] || '(空白)' ); }) ); }) ) ) ); }; return Table; }(_react.Component); Table.propTypes = { dataSource: _react.PropTypes.array, columns: _react.PropTypes.arrayOf(_react.PropTypes.shape({ title: _react.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.element]), dataIndex: _react.PropTypes.string, render: _react.PropTypes.function })), size: _react.PropTypes.oneOf(['default', 'small', 'large']), bordered: _react.PropTypes.bool, striped: _react.PropTypes.bool, rowSelection: _react.PropTypes.object }; Table.defaultProps = { size: 'default', columns: [], dataSource: [] }; exports.default = Table;